【发布时间】:2012-11-15 07:07:13
【问题描述】:
要反序列化 JSON 字符串,我使用以下方法:
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error
但是,我发现读取选项返回可变对象。有没有一种方法可以让我接收不可变的对象?
【问题讨论】:
标签: objective-c ios nsjsonserialization
要反序列化 JSON 字符串,我使用以下方法:
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error
但是,我发现读取选项返回可变对象。有没有一种方法可以让我接收不可变的对象?
【问题讨论】:
标签: objective-c ios nsjsonserialization
如果您的NSJSONReadingOptions 参数包含NSJSONReadingMutableContainers,您应该只获取可变对象。事实上,当我用options 或0 调用时,我得到一个标准的NSDictionary,但如果我使用NSJSONReadingMutableContainers,我得到一个NSMutableDictionary。您的options 值使用什么?
【讨论】:
NSJSONReadingMutableContainers(启用可变容器),则容器因此是不可变的。而且因为这是一个按位运算符,所以 0 表示没有选择任何选项。
为了更好的可读性,您可以使用kNilOptions 而不是0。
来自http://www.raywenderlich.com/5492/working-with-json-in-ios-5
...
kNilOptions只是 0 的常数——我觉得它的名字很 虽然是描述性的,所以我总是更喜欢它而不是 0 的值 方法参数。
【讨论】: