InvalidFirebaseData',原因:'(setValue:)

Posted

技术标签:

【中文标题】InvalidFirebaseData\',原因:\'(setValue:)【英文标题】:InvalidFirebaseData', reason: '(setValue:)InvalidFirebaseData',原因:'(setValue:) 【发布时间】:2016-09-24 09:58:07 【问题描述】:

我刚刚在Xcode 中更新为Swift 3,我不知道如何处理这个错误。谁能帮忙???

错误: InvalidFirebaseData',原因:'(setValue:) 无法在 thumbnailUrlFromStorage 中存储 _SwiftValue 类型的对象。只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。

我的代码是:

// Create a url for data (tumbnail image)
self.fileUrl = metaData?.downloadURLs![0].absoluteString
if (FIRAuth.auth()?.currentUser) != nil 
    let idRoom = self.BASE_REF.child("rooms").childByAutoId()
    idRoom.setValue(["caption": caption, "thumbnailUrlFromStorage": self.storageRef.child(metaData!.path!).description, "fileUrl": self.fileUrl])

【问题讨论】:

您正在尝试在您的 idRoom 中输入字典或数组?你能解释一下你想要哪种类型的价值吗? 我正在尝试将数据保存到名为 Room 的 Firebase 数据库中。稍后我想将数据调用到另一个 ViewController 中。 func 是这样的 "func CreateNewRoom(_ user: FIRUser, caption: String, data: Data) let filePath = "Thumbnail/(user.uid)/(Int(Date.timeIntervalSinceReferenceDate))" let metaData = FIRStorageMetadata() metaData.contentType = "image/jpg" storageRef.child(filePath).put(data, metadata: metaData) (metaData, error) in if error != nil print("Error uploading:") return" 【参考方案1】:
if (FIRAuth.auth()?.currentUser) != nil 
  let idRoom = self.BASE_REF.child("rooms").childByAutoId()
  let thumbnailUrlFromStorage: String = self.storageRef.child(metaData!.path!).description

  let data: Dictionary<String, Any> = [
    "caption": caption,
    "thumbnailUrlFromStorage": thumbnailUrlFromStorage,
    "fileUrl": self.fileUrl
  ]

  idRoom.setValue(data)

不确定这是否可行,因为我没有机会运行它,但在我看来,您将 self.storageRef.child(metaData!.path!).description 作为 nil 传递。

【讨论】:

没问题@CarstenHøvsgaard,别忘了接受答案?

以上是关于InvalidFirebaseData',原因:'(setValue:)的主要内容,如果未能解决你的问题,请参考以下文章

InvalidFirebaseData Swift 3 只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。

Xcode Firebase I 更新 Firebase 数据库值时出现问题

尝试将用户电子邮件和姓名保存到 Firebase 数据库时出现异常

设置值 Firebase - Swift 3

普通原因与特殊原因的区别

普通原因与特殊原因的区别