我在第7行遇到错误,并且#34;无法转换类型的值' NSDictionary.Iterator.Element' (又名'(关键:任意,价值:任何)')预期参数类型' NSDictionary'"。
init(snapshot: FIRDataSnapshot) {
key = snapshot.key
ref = snapshot.ref
let snapshotValue = snapshot.value as! [String: AnyObject]
if (snapshotValue["visitor"] != nil) {
for item in snapshotValue["visitor"] as! NSDictionary {
visitor = UserVisitor.init(visitorData: item)
}
}
答案 0 :(得分:0)
snapshotValue["visitor"]
显然是一个数组,因此将其强制转换为包含字典的Swift数组:
if let visitors = snapshotValue["visitor"] as? [[String:Any]] {
for item in visitors {
visitor = UserVisitor(visitorData: item)
}
}
答案 1 :(得分:0)
尝试这样的纯Swift方法:
// snapshotValue is a dictionary
if let snapshotValue = snapshot.value as? [String:Any] {
// The content of the "visitor" key is a dictionary of dictionaries
if let visitorDictionary = snapshotValue["visitor"] as? [String:[String:Any]] {
for (visitorId, visitorData) in visitorDictionary {
// This assumes that your initializer for UserVisitor is
// init(visitorData: [String:Any]) { ... }
visitor = UserVisitor.init(visitorData: visitorData)
}
}
}
除非您确实需要,否则请勿尝试使用NSDictionary
或NSArray
。 Native Swift类型在Swift中工作得更好......
您可以编写else语句来处理不符合预期格式的数据。