ios - 来自数据模型的对象中的数组为零
问题描述
我有一个名为 Coupon 的模型类,它有一个名为 Array 的对象数组!当我从 Coupon 类创建一个对象时,该对象内部的数组为零,并且出现错误。我究竟做错了什么?
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
}
}
}
控制器如下: 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
元素。
推荐阅读
- google-play-console - 如何检查旧版本应用程序的用户数量?
- python - TypeError:只能将列表(不是“str”)连接到列表 -
- node.js - req.body 在 POST 请求中返回空数组
- python-3.x - 散景应用程序:Windows cmd 中没有反馈
- python - Firestore 中的逻辑 OR 查询条件
- arrays - 为什么数组在给定问题中存储不同的不需要的数字?这会导致错误的输出
- neo4j - 我可以使用带有乘法而不是加法的neo4j gds最短路径算法吗?
- powerbi - 您尝试连接的服务器没有任何型号
- ruby-on-rails - ruby 2.2.3 的捆绑安装失败
- android - 无图标菜单项的波纹效果