[英]Codable - How can I declare optional Array type with empty array
struct Data: Codable {
let name: String?
let dataArray: [User] = [User]()
}
dataArray是可選的,因此我想將其分配為空,但是我的Codable失敗了? 我能知道如何實現嗎,我可以將其聲明為Optional而不分配它。 但我想實現這一目標。
您應該手動解碼對象 :
struct Data: Codable {
let name: String?
let dataArray: [User]
enum Keys: String, CodingKey {
case name
case dataArray
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: Keys.self)
name = try? container.decode(String.self, forKey: .name)
dataArray = (try? container.decode(User, forKey: . dataArray)) ?? []
}
}
或者您可以創建一個包裝器 :
struct Data: Codable {
let name: String?
private let _dataArray: [User]?
var dataArray : [User] {
get {
return _dataArray ?? []
}
}
enum Keys: String, CodingKey {
case name
case dataArray
}
}
假設它是一個用戶模型:
struct User : Codable {
let userName: String?
}
struct Data: Codable {
let name: String?
//Optional Array
let dataArray: [User]?
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.