macOS, iOS
[iOS] Codable URL이 "" 일 때 dataCorrupted 안나게 하기
SweetDev
2021. 4. 28. 11:04
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)
}