由于我错过了什么,正在寻求帮助!我定义了一个名为";用户";。
class User: NSObject {
var userID: String!
var fullname: String!
var imagePath: String!
}
现在,我想一次遍历一个对象,检查一些字段的值。
func retrieveUsers() {
let ref = Database.database().reference()
ref.child("users").queryOrderedByKey().observeSingleEvent(of: .value, with: { (snapshot: DataSnapshot) in
let users = snapshot.value as! [String: AnyObject]
self.user.removeAll()
for (key,value) in users {
// HOW DO I REFERENCE A FIELD IN THE USER OBJECT
}
}
请记住,在您的代码中,users
对象的类型是[String:AnyObject]
,因为您是从数据库(Firebase?(中获取它的。
因此,您需要处理一个非打字词典。
您可以通过执行users[key]来引用字典上的字段,其中key
是String.
从变量的命名来看,看起来users
是一个数组,而不是一个字典,但随后您将其转换为一个字典。在不了解数据库模式的情况下,很难说实际发生了什么。
但是,您很可能希望将[String:AnyObject]转换为实际的数据类型。有很多方法可以做到这一点,但您可能必须编写自己的解码器。
您可能需要添加有关实际使用的数据库的更多信息。
更新:包括一个将字典转换为对象的示例方法:
class User: NSObject {
var userID: String
var fullname: String
var imagePath: String
required init(withDictionary dict : [String: AnyObject]) {
userID = (dict["userID"] as? String) ?? ""
fullname = (dict["fullname"] as? String) ?? ""
imagePath = (dict["imagePath"] as? String) ?? ""
}
}
请注意,我并不是在处理失败——只是输入空字符串。
您还可以研究使模型Codable
兼容的存储,并尝试转换JSON。请参阅:如何使用Swift的Codable将其编码到词典中?