【问题标题】:Firebase how to get NSDictionary dataFirebase 如何获取 NSDictionary 数据
【发布时间】:2017-07-28 10:40:00
【问题描述】:

我想在用户个人资料中获取一些数据,我有一些信息,但我卡在了这个。

Firebase 数据库:

这是我的一些代码:

self.ref.child("users").child("profile").observe(.childAdded, with: { (snapshot) in


        if let dictionary = snapshot.value as? [String:Any] {

            let user = User()

            let brands = dictionary["status"] as! NSDictionary


            user.displayname = dictionary["displayname"] as? String
            user.isconnected = brands["isconnected"] as? String

            print(user.isconnected) //fatal error: unexpectedly found nil while unwrapping an Optional value


class User: NSObject {
    var displayname: String?
    var isconnected: String?
}

【问题讨论】:

  • 你为什么用String 代替isconnected ???将String 替换为Boolean。继续使用[String: Any] 而不是NSDictionary
  • @Pipiks 感谢您的回复,我收到错误更改为Boolean 它说“Fix-it Replace with DarwinBoolen”,您能否回答问题并添加一些代码?它会更有帮助。
  • 为什么状态包含键 E1D... 而不是直接对象?
  • @Pipiks 查看有多少设备与同一个用户连接,我想删除它,好吧,我刚刚删除了它。
  • 我更新了答案以保留该功能

标签: ios firebase swift3 firebase-realtime-database nsdictionary


【解决方案1】:

尝试类似的方法:

guard let dictionary = snapshot.value as? [String: Any] else {
    return
}

guard let statusDictionary = dictionary["status"] as? [String: Any] else {
    return
}

guard let deviceStatusDictionary = statusDictionary["DEVICE_KEY"] as? [String: Any] else {
    return
}

let user = User()

user.displayname = dictionary["displayname"] as? String
user.isconnected = deviceStatusDictionary["isconnected"] as? Bool

您需要知道您的设备密钥。

还有:

class User: NSObject {
    var displayname: String?
    var isconnected: Bool?
}

【讨论】:

  • 我确实喜欢你刚刚写的内容,isconnected 我得到“nil”,我认为代码无法访问 isconnected,知道吗?
  • 非常感谢 Pipiks!像魅力一样工作。我刚刚删除了设备密钥,也许它没用。
  • 如果它对您的应用很重要,欢迎您保留它,否则删除它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多