Json 无法转换类型为';任何对象?';到预期的参数类型';[任何对象]!
我使用swift库将JSON用户转换为核心数据对象Json 无法转换类型为';任何对象?';到预期的参数类型';[任何对象]!,json,swift,types,casting,anyobject,Json,Swift,Types,Casting,Anyobject,我使用swift库将JSON用户转换为核心数据对象 let user = JSON.valueForKey("user") Sync.changes(user , inEntityNamed: "User", dataStack: DataManager.manager, completion: { (response ) -> Void in print("USER \(response)") }) 但是,当使用JSON对象设置此方法的第一个参数时,我出现了预编译器错误: 无法
let user = JSON.valueForKey("user")
Sync.changes(user , inEntityNamed: "User", dataStack: DataManager.manager, completion: { (response ) -> Void in
print("USER \(response)")
})
但是,当使用JSON对象设置此方法的第一个参数时,我出现了预编译器错误:
无法将“AnyObject”类型的值转换为预期的参数类型
“[任何对象]!”
如果a将我的第一行替换为
let user = JSON.valueForKey("user") as! [AnyObject]
…应用程序因以下错误而崩溃:
无法将类型为“\uu NSCFDictionary”(0x3884d7c8)的值强制转换为
“NSArray”(0x3884d548)
如何应对
解决了多亏了@Eric.D的解释
let user = [JSON.valueForKey("user")!]
首先,user是可选的AnyObject。在需要任何非可选内容的情况下,您决不能期望可以使用可选。通常,您将使用“if let”来检查是否存在可选项
但实际上,是否要在数据库中放置AnyObject?这是自找麻烦。首先检查它是否具有正确的类型 changes()的第一个参数应该是此处指定的任何对象的隐式展开数组: 但是您的对象
user
是可选的AnyObject
解决方案:安全地打开
用户
,然后将其放入[AnyObject]
数组中,然后在changes()
中使用它。用户是字典而不是数组,因此,如果您强制将其强制转换为非数组,则它将爆炸。如果让user=JSON.valueForKey(“用户”)作为?字典