【发布时间】:2014-11-03 16:08:33
【问题描述】:
我正在尝试在 Swift 中进行一个简单的扩展,以便使用 NSJSONSerialization.dataWithJSONObject 轻松将 Dictionary 转换为 JSON NSData。
extension Dictionary {
func toJSONData() -> NSData! {
return NSJSONSerialization.dataWithJSONObject(self, options: nil, error: nil)
}
}
我不太明白为什么这不会编译。它给了我一个类型错误:
Cannot downcast from 'Dictionary<Key, Value>' to non-@objc protocol type 'AnyObject'
有什么想法吗?我用谷歌搜索了一下,找不到任何东西。
注意:
我已经对此进行了测试,效果很好:
return NSJSONSerialization.dataWithJSONObject(["":""], options: nil, error: nil)
【问题讨论】:
-
问题是不是所有的 Swift 字典都可以转换为
AnyObject,只有[NSObject: AnyObject]类型的。并且定义仅适用于某些受限泛型类型的泛型类型的扩展似乎是不可能的(数组扩展有类似的问答)。 -
@MartinR 是的,在玩了一会儿之后,我意识到我正在扩展
Dictionary而不是NSDictionary。将其放入答案中,我会接受。
标签: ios swift casting nsjsonserialization