gpt4 book ai didi

ios - 来自数据模型的对象中的数组为零

转载 作者:行者123 更新时间:2023-11-28 05:48:38 25 4
gpt4 key购买 nike

我有一个名为 Coupon 的模型类,它有一个名为 Array 的对象数组!当我从 Coupon 类创建一个对象时,该对象内部的数组变为 nil 并且出现错误。我做错了什么?

class Coupon {
private var _date: String!
private var _editor: String!
private var _predictions: Array<Prediction>?

var date: String {
get {
return _date
}
}

var editor: String {
get {
return _editor
}
}

var predictions: Array<Prediction>? {
get {
return _predictions
}
set {
self._predictions = predictions
}
}
}

Controller 如下:c.predictions![0] 给出 nil 错误

let ref = DataService.ds.REF_COUPONS.queryOrdered(byChild: "date")
ref.observe(.childAdded, with: { (snapshot) in

if let couponDict = snapshot.value as? Dictionary<String, AnyObject> {
let c_key = snapshot.key
let c = Coupon(couponKey: c_key, couponData: couponDict)
let childSnapShot = snapshot.childSnapshot(forPath: "predictions")
if let snapshots = childSnapShot.children.allObjects as? [FIRDataSnapshot] {

for snap in snapshots{

let p_key = snap.key
let p = Prediction(predictionKey: p_key, predictionData: snap.value as! Dictionary<String, AnyObject>)
self.predictions.append(p)
c.predictions![0] = self.predictions[0] <--- ERROR LINE
}
}
self.coupons.append(c)
}
self.couponsTableView.reloadData()
})

最佳答案

因为它的值为nil默认情况下。所以predictions!将导致 trying to unwrap an optional whose value is nil有点错误。

你应该在那里创建新数组:

c.predictions = [self.predictions[0]]

此外,swift 中不需要支持字段。你的Coupon类可以简化为:

class Coupon {
private(set) var date: String!
private(set) var editor: String!
var predictions: Array<Prediction>?
}

private(set)表示该值只能在此类内设置。

预测的定义线var predictions: Array<Prediction>?可以替换为空数组的默认值:

class Coupon {
private(set) var date: String!
private(set) var editor: String!
var predictions: [Prediction] = []
}

[Prediction]Array<Prediction> 相同

一旦它具有空数组的默认值而不是创建新数组,您就可以安全地附加到它:

c.predictions.append(self.predictions[0])

另请注意,您的代码 c.predictions[0] = self.predictions[0]即使在这种情况下也永远不会工作,因为数组默认为空没有 0第个元素。

关于ios - 来自数据模型的对象中的数组为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53777104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com