将可选数据写入 Firebase
Posted
技术标签:
【中文标题】将可选数据写入 Firebase【英文标题】:Writing optional data to 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
【参考方案1】:
试试:-
something = ["someOptionalData": optionalData!]
ref.updateChildValues(something,......)
鉴于您的 optionalData 是以下类型:- NSNumber、NSString、NSDictionary 或 NSArray .
【讨论】:
但这是强制展开。就我而言,实际上还有一些其他数据要与可选数据一起写入。我想要做的是,可选数据可以是 nil,如果它是 nil,那么只有非选项而不是 nil 选项将被写入 firebase。 Firebase Swift 2 可以做到这一点。 @Dravidian 可以在 Swift 3 中使用吗?以上是关于将可选数据写入 Firebase的主要内容,如果未能解决你的问题,请参考以下文章