尝试在swift中从firebase数据库中获取用户

时间:2017-10-22 17:30:57

标签: ios swift firebase firebase-realtime-database

尝试在swift中从firebase数据库中获取用户,但我收到错误this class is not key value coding-compliant for the key。我不认为我做错了什么,因为它不是我的第一个应用程序。我能够以完全相同的方式在其他应用程序中获取用户。但它现在不起作用。所有必要的细节如下。请帮助,谢谢 这是代码

func fetchUsers() {
    Database.database().reference().child("Users").observe(.childAdded, with: { (snapshot) in
        if let dictionary = snapshot.value as? [String: AnyObject] {
            print(snapshot)
            let user = Users()
            user.setValuesForKeys(dictionary)
            //print(user.Email ?? "")
            //print(user.Name ?? "")

        }
    }, withCancel: nil)
}

这是模特:

import UIKit

class Users: NSObject {
    var Name : String?
    var Email : String?
}

数据库截图 enter image description here

控制台错误

  

ChatHub [2089:904743] *由于未捕获的异常终止应用' NSUnknownKeyException',原因:' [setValue:forUndefinedKey:]:此类不符合键值编码对于关键的电子邮件。'   * 第一次抛出调用堆栈:   (0x182dd7d38 0x1822ec528 0x182dd7a00 0x1836e3780 0x18377fc0c 0x1048000d8 0x104800174 0x1048ac760 0x1048d7e40 0x105b0d49c 0x105b0d45c 0x105b12050 0x182d7ff20 0x182d7dafc 0x182c9e2d8 0x184b2ff84 0x18c24b880 0x104806a64 0x1827c256c)   libc ++ abi.dylib:以NSException类型的未捕获异常终止   (lldb)

2 个答案:

答案 0 :(得分:0)

在我看来,你不应该在开头用大写字母命名你的实例/对象/变量,参见:https://softwareengineering.stackexchange.com/questions/202031/what-is-the-reason-for-using-lowercase-for-the-first-word-in-a-local-variable-e

回到您的问题,您是否尝试重命名Users的属性?尽可能使用Struct,并且不需要像NSObject一样使用类和子类,以便于初始化。我怀疑Email的变量名是导致错误的原因。

struct Users {
    var name: String?
    var email: String?
}

Users的新实例:

let user = Users(name: "name here", email: "email here")

我希望这有帮助!

答案 1 :(得分:0)

fetchUsers()功能中,试试这个:

if let dictionary = snapshot.children.allObjects as? [String: AnyObject] {
    // your code
}