iOS 10 NSMutableDictionary和NSMutableArray不像以前一样工作

时间:2016-09-23 07:33:20

标签: swift3 ios10

似乎随着iOS 10的发布,一些事情已经破裂。对我来说最重要的是使用NSMutableDictionary和NSMutableArray。两者似乎都不再能够解析一串JSON,而是在iOS 10之前提供了一个nil,它们按预期填充。我发现的唯一方法是分别使用NSDictionary和NSArray,然后使用init方法进行强制转换。例如:

let json = "{ \"code\": \"abcde\", \"name\": \"JP Morgan\" }"
json as! NSMutableDictionary // gives nil
NSMutableDictionary(dictionary: json as! NSDictionary) // works :)

let json = "[{ \"code\": \"abcde\", \"name\": \"JP Morgan\" }]"
json as! NSMutableArray // gives nil
NSMutableArray(array: json as! NSArray) // works :)

我想知道为什么?

我希望这有助于某人解决他们的问题...

1 个答案:

答案 0 :(得分:2)

基础类型NSMutableArray / NSMutableDictionary与Swift对应物无关,不能从字面创建的Swift类型中桥接/强制。但这在Swift 3中并不新鲜。

基本上不要在Swift中使用NSMutableArray / NSMutableDictionary,除非您完全没有选择与少数低级CoreFoundation API进行交互。与Array一起使用的本机Dictionary / var类型提供相同的功能(值与引用语义除外)以及包含对象的类型。