[Video Summary] Ch. 6.9 Coding Keys in SwiftUI - Conform to Identifiable and read non Swifty Key names (2024)
Mô tả nhanh
Video này hướng dẫn cách sử dụng Coding Keys trong SwiftUI để xử lý các vấn đề thường gặp khi làm việc với API, bao gồm việc làm cho JSON conform với Identifiable và đọc các key không hợp lệ trong Swift. Video cũng trình bày cách làm việc với async image phases để hiển thị các view khác nhau tùy thuộc vào trạng thái tải ảnh.
Video
Mô tả chi tiết
Video này hướng dẫn cách sử dụng Coding Keys trong SwiftUI để xử lý các vấn đề thường gặp khi làm việc với API, bao gồm việc làm cho JSON conform với Identifiable và đọc các key không hợp lệ trong Swift. Video cũng trình bày cách làm việc với async image phases để hiển thị các view khác nhau tùy thuộc vào trạng thái tải ảnh.
Các bước thực hiện chính:
-
Làm cho struct
Creature
conform vớiIdentifiable
:- Thay thế
Hashable
bằngIdentifiable
trong khai báo struct. - Xcode sẽ yêu cầu thêm thuộc tính
id
, gán giá trị mặc định bằng UUID để tạo ID duy nhất cho mỗiCreature
. - Chuyển
var id
thànhlet id
vì ID này không nên thay đổi. - Loại bỏ cảnh báo về việc không thể decode trường
id
bằng cách sử dụngCodingKeys
.
- Thay thế
-
Sử dụng
CodingKeys
để tùy chỉnh quá trình decode JSON:- Tạo một enum
CodingKeys
conform vớiCodingKey
để xác định các thuộc tính nào sẽ được sử dụng cho quá trình decode. - Loại bỏ case ID trong CodingKeys để id không bị decode từ json
- Điều chỉnh
CreaturesListView
để sử dụng structCreature
đã conform vớiIdentifiable
, loại bỏ việc dùng index vàid: \.self
khi lặp qua danh sách.
- Tạo một enum
-
Xử lý key JSON không hợp lệ bằng CodingKeys:
- Khi API trả về các key có ký tự không hợp lệ trong Swift (ví dụ:
official-artwork
), cần sử dụngCodingKeys
để mapping các key này thành các biến hợp lệ. - Ở struct
Other
, tạo mộtCodingKeys
enum, khai báo case mới làofficialArtwork
với raw value là"official-artwork"
- Trong struct
OfficialArtwork
, thêm một biếnfrontDefault
kiểuString
- Thay đổi cách lấy image URL trong
getData()
để sử dụng các key mới được mapping.
- Khi API trả về các key có ký tự không hợp lệ trong Swift (ví dụ:
-
Xử lý trường hợp ảnh không có hoặc trả về
null
từ JSON:- Sửa kiểu dữ liệu
front_default
thànhString?
để có thể nhận giá trịnil
. - Sử dụng toán tử
??
(nil coalescing) để thay thế giá trịnil
bằng chuỗi"n/a"
trong trường hợp không có URL hợp lệ. - Chú ý: không dùng chuỗi rỗng "" để so sánh với url không hợp lệ.
- Sửa kiểu dữ liệu
-
Sử dụng
AsyncImage
để hiển thị ảnh:- Thay thế
AsyncImage
cũ bằng phiên bản cóphase
để xử lý các trạng thái khác nhau khi tải ảnh. - Sử dụng
if let
để kiểm tra xem ảnh đã tải thành công hay chưa. - Sử dụng
else if
để kiểm tra xem có lỗi xảy ra trong quá trình tải ảnh hay không. - Sử dụng
else
để hiển thị placeholder (ví dụ:ProgressView
) khi ảnh đang tải. - Nếu có lỗi xảy ra, hiển thị một system image (ví dụ:
questionmark.square.dashed
).
- Thay thế
-
Refactor code:
- Tạo extension để giảm kích thước file view, nhóm các đoạn code
AsyncImage
lớn vào một biến view trả về.
- Tạo extension để giảm kích thước file view, nhóm các đoạn code
Chúc bạn học tập hiệu quả!