当我在 iOS 8.4 和 9.2 上运行以下代码时,我得到一个 808 字节的 NSData 对象 jsonData
:
NSData *jsonData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]];
但是,如果我随后将此 NSData 对象提供给 CJSONDeserializer,我会在 iOS 9.2 中崩溃,但在 iOS 8.4 中会得到一个 NSDictionary。例如
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:nil];
注意:在崩溃那一行,NSData 对象似乎发生了变化——例如这里:
- (id)deserializeAsDictionary:(NSData *)inData error:(NSError **)outError
{
if ([self _setData:inData error:outError] == NO)
inData
在 iOS 8.4 中为 808 字节,但在 iOS 9.2 中如下所示:
因为奇怪的地址,我认为这意味着对象不正确(也许被覆盖了?)。
我试图在没有 App Transport Security 开销的情况下找出问题,所以我将 NSAppTransportSecurity 设置如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我也更新了 CJSONDeserializer 到最新版本。
任何其他建议可能是什么问题。
最佳答案
尝试提供一个错误对象
NSError *error = nil;
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
关于iOS 9.2 崩溃 [[CJSONDeserializer 反序列化器] deserializeAsDictionary :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34421883/