从FIRRemoteConfigValue转换为不相关的类型String总是失败:Firebase,Swift

时间:2016-10-10 12:01:01

标签: ios swift firebase firebase-realtime-database firebase-remote-config

我知道这是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' 安装后发生什么变化,它开始给我这个错误?

  • 为什么每次初始化变量时都需要强制转换?

  • 有更好的方法吗?

1 个答案:

答案 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

变暖不会显得更长.....

注意:如果您使用上述内容,那么旧代码也能正常工作......