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")