我有一个名为Profile的模型,其中有2个成员posPoints
和negPoints
。我正在尝试在名为MyProfileViewController
的VC上显示当前用户的积分。但是,当我输入profiles.posPoints
时,Xcode无法识别它,并给我这个错误
“ [个人资料]”类型的值没有成员“ posPoints”
static func show(for user: User = User.current, completion: @escaping (Profile?) -> Void) {
let profileRef = Database.database().reference().child("profile").child(user.username)
let ref = Database.database().reference().child("profile").child(user.username).child(profileRef.key ?? "")
ref.observeSingleEvent(of: .value, with: { (snapshot) in
guard let profile = Profile(snapshot: snapshot) else {
return completion(nil)
}
completion(profile)
})
}
import Foundation
import FirebaseDatabase.FIRDataSnapshot
class Profile {
// MARK - Properties
var key: String?
let posPoints: Int
let negPoints: Int
init?(snapshot: DataSnapshot) {
guard !snapshot.key.isEmpty else {return nil}
if let dict = snapshot.value as? [String : Any]{
let posPoints = dict["posPoints"] as? Int
let negPoints = dict["negPoints"] as? Int
self.key = snapshot.key
self.posPoints = posPoints ?? 0
self.negPoints = negPoints ?? 0
}
else{
return nil
}
}
}
(在MyProfileViewController的viewDidLoad中)
ProfileService.show { [weak self] (profiles) in
self?.profiles = profiles
}
myPointsLabel.text = profiles.posPoints
}
Firebase数据库视图
答案 0 :(得分:0)
您在viewDidLoad
中的代码存在以下问题。
1-在myPointsLabel
内更新completionHandler
,完成了profiles
的获取。
2- UI更新应在主线程上完成。
3-首先,从profile
的{{1}}中提取所需的array
,然后访问点并将其转换为profiles
。 / p>
您的代码应如下所示,
String