2017-07-28 83 views
0

我想获得一些数据在用户配置文件中,我有一些信息,但我被困在这一个。Firebase如何获取NSDictionary数据

火力地堡数据库:enter image description here

下面是我的一些代码:

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? 
} 
+0

为什么你使用'String'为'isconnected' ???将'String'替换为'Boolean'。继续使用'[String:Any]'而不是'NSDictionary' – Pipiks

+0

@Pipiks谢谢你的回复,我得到的错误改为'Boolean'它说“修复它替换DarwinBoolen”,你可以请回答这个问题,并添加一些码?它会更有帮助。 – Sam

+0

为什么状态包含关键E1D ...而不是直接的对象? – Pipiks

回答

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? 
} 
+0

我确实喜欢你刚刚写的内容,对于isconnected,我得到“无”,我认为代码没有访问isconnected,任何想法? – Sam

+0

我的坏检查我的帖子更新 – Pipiks

+0

非常感谢你Pipiks!像魅力一样工作。而我刚刚删除设备密钥也许是无用的。 – Sam