似乎随着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 :)
我想知道为什么?
我希望这有助于某人解决他们的问题...
答案 0 :(得分:2)
基础类型NSMutableArray / NSMutableDictionary
与Swift对应物无关,不能从字面创建的Swift类型中桥接/强制。但这在Swift 3中并不新鲜。
基本上不要在Swift中使用NSMutableArray / NSMutableDictionary
,除非您完全没有选择与少数低级CoreFoundation API进行交互。与Array
一起使用的本机Dictionary
/ var
类型提供相同的功能(值与引用语义除外)以及包含对象的类型。