Ios 从Firebase设置用户值
我试图初始化Ios 从Firebase设置用户值,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我试图初始化用户对象中的值,但从另一个问题来看,似乎不可能在那里进行初始化-现在,在viewDidLoad中的视图控制器中尝试执行相同的操作,我遇到了另一个错误: 这是我在viewDidLoad中对Firebase的调用(myUser是一个全局变量var myUser:User!): 我想知道这是否是从Firebase设置用户值的正确方法,如果是,如何避免错误?在您的代码中,您正在使用profile let profilePicture = userData["profile"] as! Str
用户
对象中的值,但从另一个问题来看,似乎不可能在那里进行初始化-现在,在viewDidLoad
中的视图控制器中尝试执行相同的操作,我遇到了另一个错误:
这是我在viewDidLoad
中对Firebase的调用(myUser
是一个全局变量var myUser:User!
):
我想知道这是否是从Firebase设置用户值的正确方法,如果是,如何避免错误?在您的代码中,您正在使用
profile
let profilePicture = userData["profile"] as! String!
但是在数据中,您有profilePicture
由于您已强制展开,因此在找不到密钥时将出现此错误
您应该确保在两个位置使用相同的键。如果您遇到数据问题,可能还值得包括默认值
let profilePicture = userData["profile"] as? String ?? "default"
由于用户已注册,您应存储引用firebase用户的密钥(例如,通过
NSUserDefaults
)。在这种情况下,“-KgjW9PEvCPVqzn7T5pZ”
。在userRef中使用它,而不是childByAutoId,这将生成一个具有新密钥的新的子位置,并且还不存在(因此,NSNull
)
接得好,我修正了,但它不会影响我得到的错误。
let profilePicture = userData["profile"] as! String!
let profilePicture = userData["profile"] as? String ?? "default"
let userRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users").child("-KgjW9PEvCPVqzn7T5pZ")