将快照字典从firebase数据库保存到类对象

时间:2018-01-12 22:53:37

标签: ios swift firebase dictionary

尝试将用户facebook-firebase信息中的快照保存到User类,以便我可以在整个应用程序中引用它。当我使用“user.setValuesForKeysInDictionary(字典)”将快照字典转换为User对象时,应用程序崩溃,如果我对该行进行注释,则print(dictionary [“first_name”])有效。有什么想法吗?

var users = [User]()

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(handleCancel))

    fetchUser()
}

func fetchUser() {
    Database.database().reference().child("users").observe(.childAdded, with: { (snapshot) in

        if let dictionary = snapshot.value as? [String: AnyObject] {
            let user = User()
            user.setValuesForKeysInDictionary(dictionary)

            print(dictionary["first_name"])
        }

       // print(snapshot)

    }, withCancel: nil)

}

这是User类文件

import UIKit

class User: NSObject {
    var name: String?
    var email: String?
    var id: String?
    var first_name: String?
}

1 个答案:

答案 0 :(得分:1)

首先,不要使用AnyObject使用Any

建议:如果您使用 swift4 使用可编码,请勿使用AnyObject

确保您的所有User属性都与dictionary键匹配

根据Apple文档

  

keyedValues

     

一个字典,其键标识接收器中的属性。接收器中属性的值设置为字典中的相应值。