Xcode Firebase I 更新 Firebase 数据库值时出现问题
Posted
技术标签:
【中文标题】Xcode Firebase I 更新 Firebase 数据库值时出现问题【英文标题】:Xcode Firebase I Problem with updating Firebase database values 【发布时间】:2019-02-16 10:18:11 【问题描述】:当我运行程序并更改一个值并将其发送到 Firebase 时,我收到错误:由于未捕获的异常 'InvalidFirebaseData' 导致应用程序终止,原因:'(updateChildValues:withCompletionBlock:) 无法将 UITextField 类型的对象存储在 .只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。'
func updateUsersProfile()
//check to see if the user is logged in
if let userID = Auth.auth().currentUser?.uid
//create an access point the Firebase storage
let storageItem = storageRef.child("profile_images").child(userID)
//get the image uploaded from photo library
guard let image = profileImageView.image else return
if let newImage = image.pngData()
//upload to Firebase storage
storageItem.putData(newImage, metadata: nil, completion:
(metadata, error) in
if error != nil
print(error!)
return
storageItem.downloadURL(completion: (url, error) in
if error != nil
print(error!)
return
if let profilePhotoURL = url?.absoluteString
guard let newUserName = self.usernameText.text else return
guard let newDisplayName = self.displayNameText.text else return
guard let newBioText = self.bioText.text else return
guard let newDescription = self.descriptionText else return
let newValuesForProfile =
["photo": profilePhotoURL,
"username": newUserName,
"displayname": newDisplayName,
"mydescription": newDescription,
"bio": newBioText]
//Update the Firebase database for that user
self.databaseRef.child("profile").child(userID).updateChildValues(newValuesForProfile, withCompletionBlock: (error, ref) in
if error != nil
print(error!)
return
print("Profile successfully updated")
)
)
)
【问题讨论】:
嗨,把所有的值作为字符串 - ["photo": "(profilePhotoURL)", 等等 【参考方案1】:错误:由于未捕获的异常“InvalidFirebaseData”而终止应用程序,原因:“(updateChildValues:withCompletionBlock:) 无法将 UITextField 类型的对象存储在 .只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。'
错误表明函数updateChildValues:withCompletionBlock
正试图存储UITextField
类型的对象而不是文本。所以你应该检查你是否写了一些文本字段本身而不是文本字段的文本。
检查时,您会发现您在字典中添加了descriptionText
,而不是文本。换行为:
guard let newDescription = self.descriptionText.text else return
【讨论】:
谢谢!没看到忘记写了。以上是关于Xcode Firebase I 更新 Firebase 数据库值时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
颤振:致命错误:找不到模块“firebase_analytics”
Cloud Functions for Firebase - 在一天中的特定时间更新值,每天 [重复]