我對此完全困惑。我將資料附加到一個可選陣列,但它剛剛消失了。這是進一步解釋的代碼:
問題出在哪里:
private func toObject(from data: GetOldDistrSrvMenuQuery.Data.GetOldDistrSrvMenu) -> GetOldDistrSrvMenu {
let obj = GetOldDistrSrvMenu()
obj.title = data.title
obj.subtitle = data.subtitle
obj.buttonText = data.buttonText
obj.buttonShow = data.buttonShow ?? false
obj.buttonUrl = data.buttonUrl
if let items = data.items {
for item in items {
if let item = item {
let aa = toDataObject(from: item)
obj.items?.append(aa)
print("Debug1: \(aa.name)") // data exist as expected
print("Debug2: \(obj.items)") // nil in obj, why?
}
}
}
return obj
}
toDataObject 函式:
private func toDataObject(from data: GetOldDistrSrvMenuQuery.Data.GetOldDistrSrvMenu.Item) -> GetOldDistrSrvMenuItem {
let obj = GetOldDistrSrvMenuItem()
obj.sourceUrl = data.sourceUrl
obj.thumbnailUrl = data.thumbnailUrl
obj.name = data.name
return obj
}
GetOldDisrSrvMenu 物件:
class GetOldDistrSrvMenu: Object {
@objc dynamic var _id: String = UUID().uuidString
@objc dynamic var title: String?
@objc dynamic var subtitle: String?
@objc dynamic var buttonText: String?
@objc dynamic var buttonShow: Bool = false
@objc dynamic var buttonUrl: String?
var items: [GetOldDistrSrvMenuItem]?
override class func primaryKey() -> String? {
return "_id"
}
}
class GetOldDistrSrvMenuItem: Object {
@objc dynamic var thumbnailUrl: String?
@objc dynamic var name: String?
@objc dynamic var sourceUrl: String?
}
為什么 obj 陣列中缺少它?我完全糊涂了,不知道出了什么問題。
uj5u.com熱心網友回復:
您沒有初始化陣列。
一個可選陣列意味著它是一個nil. append在 a 上呼叫(或任何函式)nil不會做任何事情。
您必須在某個時候將陣列初始化為空陣列。
obj.items = []
我強烈建議不要使用可選陣列,而總是默認為非可選的空陣列。
[]和nil陣列之間存在差異的情況很少。
你可以做 var items: [GetOldDistrSrvMenuItem] = []
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399042.html
