- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在使用 Swift 3 理解 firebase 时遇到一些问题。
我 reshape 了我的观察者,使其看起来像这样:
currentUserFirebaseReference.observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
let UID = snapshot.key
let dict = snapshot.value as! Dictionary<String,AnyObject>
let pictureURL = dict["pictureURL"] as! String
我以前就是这样
observation..... in {
let picture = snapshot.value!["pictureURL"]
但现在我猜你必须明确地告诉 Firebase 你正在处理字典?
当我尝试设置一个值时,我的问题就来了。
我正在将上面的 pictureURL 添加到 Person 类,稍后我正在做:
let picURL = self.currentUserInfo.pictureURL // The picture from before
let info = ["pictureURL" : picURL, ....morestuff] as [String : Any] // Swift conversion added the String:Any bit. Assume this is correct?
ref.setValue(info)
我得到这个错误:
Terminating app due to uncaught exception 'InvalidFirebaseData', reason: '(setValue:) Cannot store object of type _SwiftValue at pictureURL. Can only store objects of type NSNumber, NSString, NSDictionary, and NSArray.
为什么会发生这种情况,我该如何解决?
编辑:
所以我发现只有在尝试从类中提取信息时才会发生这种情况。
let data : Dictionary<String, Any> = ["Cats" : 3, "Dogs" : 9]
DataService.ds.REF_BASE.child("testing").setValue(data)
上面的代码有效。
class Dog {
var fur : String?
}
let dog = Dog()
dog.fur = "Brown"
let data : Dictionary<String, Any> = ["Cats" : 3, "Dogs" : 9, "DogFur" : dog.fur]
DataService.ds.REF_BASE.child("testing").setValue(data)
该代码崩溃并提示我无法分配 swiftvalue 类型。
最佳答案
看起来 Firebase 希望我们使用 Swift 3 非常具体地处理您的数据类型。
我们需要直接告诉 Swift 我们将拥有什么样的字典。在大多数情况下,它可能是
Dictionary<String, Any>
我认为“Any”是 Swift 3 中的新事物。 AnyObject 在这里不起作用,因为 Swift 重新定义了 AnyObjects 是什么,而 Strings/Ints 似乎不再是它们了。
最后,看来我们必须在您的字典中完全没有可选项。也许可选的是 _SwiftValue?一旦我摆脱了可选值并确保每个值都将在那里,它就开始为我工作。
关于ios - (setValue :) Cannot store object of type _SwiftValue at pictureURL. 只能存储NSNumber, NSString, NSDictionary, and NSArray类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485065/
直到今天早上,在过去的两年里,我实现的 Linkedin Oauth 系统没有遇到任何问题。我可以验证所有数据仍然通过,但突然出现了一个非常奇怪的问题 pictureUrl返回数据的参数。它不再指向图
在使用 Swift 3 理解 firebase 时遇到一些问题。 我 reshape 了我的观察者,使其看起来像这样: currentUserFirebaseReference.observeSi
我遇到了 Typescript 和以下消息的问题: { child :元素[];图片网址:字符串; }' 不可分配给类型 'IntrinsicAttributes & { children?: Rea
我是一名优秀的程序员,十分优秀!