gpt4 book ai didi

ios - Firebase Swift 3.0 语法更新?

转载 作者:行者123 更新时间:2023-11-29 00:40:23 24 4
gpt4 key购买 nike

我有一个支持 Firebase 的 iOS 应用程序,在我将 Xcode 升级到 Xcode 8 之前一直运行良好。现在错误显示在以下行中:

让 state = child.value!["STATE"] as! String//在 Swift 2.3 中是正确的

Swift 3.0 中的错误:“NSFastEnumerationIterator.Element”(又名“Any”)类型的值没有成员“value”

将我的代码转换为 Swift 3.0 后,语法变成了这样:

let name = (child as AnyObject).value!["NAME"] as!字符串

但这会返回此错误:

类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议(protocol)“AnyObject”

此外,当我尝试访问快照值时,我收到此错误:The Type 'Any' has no subscript members

Firebase 文档没有针对 Swift 3.0 进行更改,那么这里的问题是什么?

完整代码块:

 self.firebase.child(“INFO”).observeSingleEvent(of: .value, with: { (snap: FIRDataSnapshot) in

for child in snap.children{

if child.hasChild("NAME") && child.hasChild("ZIP-CODE") && child.hasChild("STATE"){

let name = child.value!["NAME"] as! String
let zip = child.value!["ZIP-CODE"] as! String
let state = child.value!["STATE"] as! String

}
}

})

感谢大家的帮助,不胜感激!

最佳答案

我猜你不会将你从事件中检索到的 Snapshot 转换为任何类型,这可能会导致 Xcode 混淆这个 Snapshot 甚至属于什么类型?

   FIRDatabase.database().reference().observeSingleEvent(of : .value, with : {(Snapshot) in

if let snapDict = Snapshot.value as? [String:AnyObject]{
for child in snapDict{

if let name = child.value["NAME"] as? String{

print(name)
}
if let zip = child.value["ZIP-CODE"] as? String{

print(zip)
}
if let state = child.value["STATE"] as? String{

print(state)
}
}
}
})

关于ios - Firebase Swift 3.0 语法更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39667694/

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