티스토리 뷰
import Cocoa
struct Company: Codable {
let courseImages: [URL?]
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let nullableEmployees = try values.decode([OptionalObject<URL>].self, forKey: .courseImages) // <1>
// courseImages = nullableEmployees.compactMap { $0.value } // <2>
courseImages = nullableEmployees.map { $0.value }
}
}
public struct OptionalObject<Base: Decodable>: Decodable {
public let value: Base?
public init(from decoder: Decoder) throws {
do {
let container = try decoder.singleValueContainer()
value = try container.decode(Base.self)
} catch {
value = nil
}
}
}
let json = """
{
"courseImages": ["https://naver.com", "https://naver.com", ""]
}
"""
do {
let company = try JSONDecoder().decode(Company.self, from: json.data(using: .utf8)!)
print(company)
} catch {
print(error)
}
'macOS, iOS' 카테고리의 다른 글
[iOS] 클립보드에 복사하기 (0) | 2021.05.06 |
---|---|
[SwiftUI] UserDefaults -> AppStorage (0) | 2021.04.28 |
[Swift] Firebase DynamicLink 활용해서 Deeplink 처리하기 (0) | 2021.04.26 |
[Swift] 함수 이름 프린트 하는법 (0) | 2021.04.24 |
[SwiftUI] Loading Indicator 만들기 (0) | 2021.04.24 |