我正在使用swift lib "Sync" from Hyperoslo将JSON用户转换为Core Data对象。
let user = JSON.valueForKey("user")
Sync.changes(user , inEntityNamed: "User", dataStack: DataManager.manager, completion: { (response ) -> Void in
print("USER \(response)")
})
但是当使用我的JSON对象设置此方法的第一个参数时,我有预编译错误:
无法转换'AnyObject'类型的值?预期的参数类型 '[AnyObject]!
如果用...替换我的第一行
let user = JSON.valueForKey("user") as! [AnyObject]
...应用程序因此错误而崩溃:
无法将类型'__NSCFDictionary'(0x3884d7c8)的值转换为 'NSArray'(0x3884d548)。
如何处理?
已解决感谢@ Eric.D
的解释let user = [JSON.valueForKey("user")!]
答案 0 :(得分:3)
changes()
的第一个参数应该是隐式解包的AnyObject 数组,如下所示:
但您的对象user
是可选的AnyObject。
解决方案:安全解开user
然后将其放入[AnyObject]
数组中,然后在changes()
中使用它。
答案 1 :(得分:1)
首先,user是一个可选的AnyObject。您永远不会期望您可以使用任何非可选项的可选项。通常你会使用"如果让"检查是否有可选项。
但实际上,你想在你的数据库中放一个AnyObject吗?这是在惹麻烦。首先检查它是否具有正确的类型。