试图快速从firebase数据库中获取用户

Posted

技术标签:

【中文标题】试图快速从firebase数据库中获取用户【英文标题】:Trying to fetch users from firebase database in swift 【发布时间】:2017-10-22 17:30:57 【问题描述】:

尝试快速从 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?

数据库截图

控制台出错

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)

【问题讨论】:

你解决了吗? 【参考方案1】:

在我看来,您不应该在开头使用大写字母命名您的实例/对象/变量,请参阅: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")

我希望这会有所帮助!

【讨论】:

小写第一个单词仍然出现相同的错误。是的,电子邮件是错误的原因。 :( 您尝试过清理您的项目吗? CMD+Shift+KCMD+Shift+AltOption+K。如果这不起作用,请尝试将其重命名为 emailAddress 我清理了 10 次项目并更改为电子邮件地址仍然没有运气【参考方案2】:

在你的 fetchUsers() 函数中,试试这个:

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

【讨论】:

以上是关于试图快速从firebase数据库中获取用户的主要内容,如果未能解决你的问题,请参考以下文章

试图从 firebase Swift 获取数据

我如何从颤动的firebase实时数据库中检索数据

试图快速删除从firebase检索到的数组中的重复值

从 firebase xcode 获取用户名

如何从firebase数据库中获取一个孩子

如何从 firebase 数据库中获取登录用户的数据