【发布时间】:2017-03-21 06:29:48
【问题描述】:
我正在尝试更新 firebase 上的节点数据,但是当我发送数组时它崩溃了。它给出了一个错误
无法将 _SwiftValue 类型的对象存储为 0。只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。
这是我的代码:
reference_user.child(user_uid).updateChildValues(["name": username, "phone": phoneNo, "url": imgUrl, "emergency": emerLocalArr], withCompletionBlock: {( error, ref) in
if (error != nil) {
KRProgressHUD.showError(progressHUDStyle: nil, maskType: nil, font: nil, message: "Couldn't Update the node")
} else {
print("success")
}
})
emerLocalArr 是 NSMutableArray。
这是我的结构
struct Emergency{
var emer_id: NSNumber
var emer_name: String
var emer_phoneNo: String
init(emergency: NSDictionary) {
if emergency.object(forKey: "id") != nil {
emer_id = emergency.object(forKey: "id") as! NSNumber
}
else{
emer_id = 0
}
if emergency.object(forKey: "name") != nil {
emer_name = emergency.object(forKey: "name") as! String
}
else{
emer_name = ""
}
if emergency.object(forKey: "phoneNo") != nil{
emer_phoneNo = emergency.object(forKey: "phoneNo") as! String
}
else{
emer_phoneNo = ""
}
}
func convertToDictionary() -> [String : Any] {
let dic: [String: Any] = ["id":self.emer_id, "name":self.emer_name, "phoneNo":self.emer_phoneNo]
return dic
}
}
【问题讨论】:
-
你的价值观是什么类型的?该错误表明它们与 Firebase 不兼容
-
emerLocalArr 中的值是模型类 struct Emergency{ var emer_id: NSNumber var emer_name: String var emer_phoneNo: String init(emergency: NSDictionary) { }