1

我知道这是Cast from FIRRemoteConfigValue to unrelated type String always failed的副本。但公认的答案是它只是一个错误

我认为不是。

根据另一种解决方案,每次检索或实例化变量时,我都必须强制转换数据类型。我希望找到一个不同而优雅的解决方案。

一切工作正常,但在我安装后Pod 'FirebaseRemoteConfig',我在每一行都收到此警告,我用收到的 Snapshot 值实例化一个变量。

从 FIRRemoteConfigValue 转换为不相关的字符串类型总是失败

当我运行我的应用程序时,它会在那里崩溃。

错误代码

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',它开始给我这个错误?

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

  • 有更好的方法吗?

4

1 回答 1

0

终于找到解决办法了...

使用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

像这样使用

                let id = snapshot.value.valueForKey("senderId") as! String
                let text = snapshot.value.valueForKey("text") as! String
                let locationId = snapshot.value.valueForKey("location") as! String

变暖是不会出现更长的时间......

注意:如果你像上面那样使用旧代码也可以正常工作......

于 2016-10-26T11:10:02.883 回答