ios - 无法将类型 'NSTaggedPointerString' 的值转换为 'NSDictionary'。 swift/火力基地

标签 ios swift firebase firebase-realtime-database

当在 Firebase 中监听一个新对象时,我得到这个错误:无法将 NSTaggedPointerString 类型的值转换为 NSDictionary。以下是监听已注册用户的代码。

FIRAuth.auth()!.addStateDidChangeListener { auth, user in
     guard let user = user else { return }
     self.user = User(authData: user)

     let userref = FIRDatabase.database().reference(withPath: "users").child(self.user.uid)
     userref.observe(.value, with: { snapshot in
          print(snapshot.value!)
          var newItems: [UserItem] = []
          for item in snapshot.children {
               let userDetail = UserItem(snapshot: item as! FIRDataSnapshot) /////////// CRASHES HERE //////////
               newItems.append(userDetail)
          }
     self.userItem = newItems
     })
     print(self.user.uid)
}

当错误出现时它指向这里:

    init(snapshot: FIRDataSnapshot) {
        key = snapshot.key
        let snapshotValue = snapshot.value as! [String:Any] ///// ERROR HERE
        name = snapshotValue["name"] as! String
        email = snapshotValue["email"] as! String
        age = snapshotValue["age"] as! String
        ref = snapshot.ref
}

控制台正在正确打印 Firebase 内部的内容,数据在那里并且存在,但是这种转换或数据读取错误不断发生。它与转换有关,但我不确定。

最佳答案

snapshot.value as! String

在这种情况下,该值是一个字符串,因此您必须将其转换为。

关于ios - 无法将类型 'NSTaggedPointerString' 的值转换为 'NSDictionary'。 swift/火力基地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895887/

相关文章:

swift - 货币正则表达式 - 从计数限制中排除逗号

ios - Swift:使用 prepareForSegue 将 UIView 容器的高度设置为嵌入式 UITableView 的高度

firebase - 检查Firebase文档中的特定字段,如果找到字段,则返回文档ID。

ios - "Failed to compile the generated registrar code."将 Forms 和 Visual.Material 更新到 v4.2.0.848062 后

iphone - 使用 otool 反汇编默认的 iOS 应用程序

ios - 将按钮的目标方法设置为另一个类的函数

ios - 如何通过深层链接将用户导航到所需的 View Controller ,以使用 Firebase 全新安装应用程序

ios - pod 'Firebase' 未安装

ios - 如何修复 _NSCFNumber 的 iOS 内存泄漏?

javascript - 为什么我得到 'Cannot read property ' push' of undefined' (React Native)?