【问题标题】:Writing optional data to Firebase将可选数据写入 Firebase
【发布时间】:2016-11-01 17:11:45
【问题描述】:

使用 Firebase Swift 2 版本,我能够做到:

something = ["someOptionalData": optionalData]
ref.updateChildValues(something,......})

转换为 Swift 3 和最新的 Firebase 后,我遇到了这个错误:

Cannot store object of type _SwiftValue at optionalData. Can only store objects of type NSNumber, NSString, NSDictionary, and NSArray.

经过一番谷歌搜索,人们说 firebase 不接受可选类型。

所以我想知道除此之外还有什么更好的处理方法:

if let unwrappedOptionalData = optionalData {
        something = [
            "someOptionalData": unwrappedOptionalData
        ]
} else {
        something = [
            "someOptionalData": true
        ]
}
ref.updateChildValues(something,......)

【问题讨论】:

  • 您的 sn-p 可以减少到 something = ["someOptionalData": optionalData ?? true]
  • @dan 但是当 optionalData 为 nil 时我不想将任何内容存储为“someOptionalData”,我尝试过 something = ["someOptionalData": optionalData ?? NSNull()] 但 xcode 提示 Left side of nil coalescing operator ?? has non-optional type Any, so the right side is never used

标签: ios firebase firebase-realtime-database swift3


【解决方案1】:

试试:-

something = ["someOptionalData": optionalData!]
ref.updateChildValues(something,......)

鉴于您的 optionalData 是以下类型:- NSNumberNSStringNSDictionaryNSArray .

【讨论】:

  • 但这是强制展开。就我而言,实际上还有一些其他数据要与可选数据一起写入。我想要做的是,可选数据可以是 nil,如果它是 nil,那么只有非选项而不是 nil 选项将被写入 firebase。 Firebase Swift 2 可以做到这一点。
  • @Dravidian 可以在 Swift 3 中使用吗?
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多