【发布时间】:2018-02-08 22:10:15
【问题描述】:
我在“self.email = (snapshot.value as!NSDictionary)["email"] as!String”行中收到一个错误,说它无法转换类型为“NSNull”的值。如何修复错误?我认为既然我有一个 toAnyObject 函数,它会将所有内容都转换为字符串。
struct User {
var email: String!
var uid: String!
var ref: DatabaseReference!
var key: String = ""
init(snapshot: DataSnapshot) {
self.email = (snapshot.value as! NSDictionary)["email"] as! String
self.uid = (snapshot.value as! NSDictionary)["uid"] as! String
self.ref = snapshot.ref
self.key = snapshot.key
}
init(email: String, uid: String) {
self.email = email
self.uid = uid
self.ref = Database.database().reference()
}
func toAnyObject() -> [String: Any] {
return ["email":self.email, "uid":self.uid]
}
}
【问题讨论】:
-
if let snap = snapshot.value as? [String:Any] { self.email = snap["email"] as! String }不要强制解包,因为它可能是空的,就像你的情况一样 ..snapshot.value 是空的 -
如果我想添加另一个字段,我应该简单地添加吗?出于某种原因,该代码给了我一个错误。如果让 snap = snapshot.value as? [String:Any] { self.email = snap["email"] as!字符串 self.firstname = snap["firstname"] as!字符串 }
标签: ios swift xcode dictionary swift3