【问题标题】:InvalidFirebaseData', reason: '(setValue:)InvalidFirebaseData',原因:'(setValue:)
【发布时间】:2025-11-27 18:30:01
【问题描述】:

我刚刚在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"

标签: ios firebase swift3 firebase-realtime-database


【解决方案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,别忘了接受答案?