json - 无法将类型 'AnyObject?' 的值转换为预期的参数类型 '[AnyObject]!

标签 json swift types casting anyobject

我正在使用 swift 库 "Sync" from Hyperoslo将 JSON 用户转换为核心数据对象。

let user = JSON.valueForKey("user")
Sync.changes(user , inEntityNamed: "User", dataStack: DataManager.manager, completion: { (response ) -> Void in
    print("USER \(response)")
})

但是当使用我的 JSON 对象设置此方法的第一个参数时,出现预编译错误:

Cannot convert value of type 'AnyObject?' to expected argument type '[AnyObject]!'

如果将我的第一行替换为...

let user = JSON.valueForKey("user") as! [AnyObject] 

...应用程序崩溃并出现此错误:

Could not cast value of type '__NSCFDictionary' (0x3884d7c8) to 'NSArray' (0x3884d548).

如何处理?

已解决 感谢@Eric.D 的解释

let user = [JSON.valueForKey("user")!]

最佳答案

changes() 的第一个参数应该是一个隐式展开的 AnyObject 数组,如下所示:

https://github.com/hyperoslo/Sync#swift

但是你的对象 user 是一个可选的 AnyObject。

解决方案:安全地解包 user 然后将其放入 [AnyObject] 数组中,然后在 changes() 中使用它。

关于json - 无法将类型 'AnyObject?' 的值转换为预期的参数类型 '[AnyObject]!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395293/

相关文章:

javascript测试数组对象是否存在

ios - 如何让 Swift/Xcode 控制台显示中文字符而不是 unicode?

ios - 顶部行在 reloadData() 时从 UITableView 消失,直到向上/向下滚动

ios - UIPickerView 在滚动时跳过数组中的值

java - UML - 如何插入来自 java 类的对象属性?

基于输入类型的 Scala 动态返回类型

sql-server-2005 - [Sql-Server]密码salt和hash值使用什么数据类型,长度是多少?

json 错误,无法将对象解码为 Go 值

ios - JSON 没有快速更新

javascript - 防止 jquery 在表中追加重复值