我知道这是Cast from FIRRemoteConfigValue to unrelated type String always fails的重复。但是接受的答案是它只是一个 bug 。
我认为不是。
根据另一个解决方案,每次检索或实例化变量时,我都必须强制转换数据类型。我希望能找到一个不同而优雅的解决方案。
一切正常,但在我安装 Pod 'FirebaseRemoteConfig'
之后,我在每一行都有这个警告我实例化了一个Snapshot值为I的变量接收。
从FIRRemoteConfigValue转换为无关类型String始终失败
当我运行我的应用程序时,它会在那里崩溃。
错误代码
FIRDatabase.database().reference().child("Posts").observe(.value, with: {(recievedSnap) in
if recievedSnap.exists(){
if let dict = recievedSnap.value as? [String:AnyObject]{
for each in dict{
let str = each.value["text"] as! String //Line of warning(and crash when the app is run)
}
}
}
})
工作代码
FIRDatabase.database().reference().child("Posts").observe(.value, with: {(recievedSnap) in
if recievedSnap.exists(){
if let dict = recievedSnap.value as? [String:AnyObject]{
for each in dict{
if let eachValue = each.value as? [String:AnyObject]{
let str = eachValue["text"] as! String
}
}
}
}
})
我正在寻找解释:
Pod 'FirebaseRemoteConfig'
安装后发生什么变化,它开始给我这个错误?
为什么每次初始化变量时都需要强制转换?
有更好的方法吗?
答案 0 :(得分:0)
终于得到了解决方案......
使用\\server
代替valueForKey
括号访问值,因为[]
不支持使用FIRRemoteConfigValue
然后所有的价值都消失了......
例如
[]
下面的代码会发出警告......
Warning code...
像这样使用
let id = snapshot.value!["senderId"] as! String
let text = snapshot.value!["text"] as! String
let locationId = snapshot.value!["location"] as! String
变暖不会显得更长.....
注意:如果您使用上述内容,那么旧代码也能正常工作......