ios – (setValue :)无法在pictureURL中存储_SwiftValue类型的对象.只能存储NSNumber,NSString,NSDictionary和NSArray类型的对象

ios – (setValue :)无法在pictureURL中存储_SwiftValue类型的对象.只能存储NSNumber,NSString,NSDictionary和NSArray类型的对象,第1张

概述使用 Swift 3了解firebase有一些问题. 我重新让我的观察者看起来像这样: currentUserFirebaseReference.observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in let UID = snapshot.key let dict = snapsho 使用 Swift 3了解firebase有一些问题.

我重新让我的观察者看起来像这样:

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,"Dogs" : 9,"DogFur" : dog.fur]    DataService.ds.REF_BASE.child("testing").setValue(data)

该代码崩溃并说我无法分配swiftvalue类型.

解决方法 看起来Firebase希望我们对Swift 3的数据类型非常具体.

我们需要直接告诉Swift我们将拥有什么样的字典.在大多数情况下,它可能是

Dictionary<String,Any>

我觉得“任何”都是Swift 3中的新东西. AnyObject在这里不起作用,因为Swift重新定义了AnyObjects,而Strings / Ints似乎不再是它们了.

最后,似乎我们必须在你的字典中绝对没有选项.也许一个可选的_SwiftValue?一旦我摆脱了选择权并且贪得无厌,每个价值都将在那里开始为我工作.

总结

以上是内存溢出为你收集整理的ios – (setValue :)无法在pictureURL中存储_SwiftValue类型的对象.只能存储NSNumber,NSString,NSDictionary和NSArray类型的对象全部内容,希望文章能够帮你解决ios – (setValue :)无法在pictureURL中存储_SwiftValue类型的对象.只能存储NSNumber,NSString,NSDictionary和NSArray类型的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存