1

当我在 iOS 8.4 和 9.2 上运行以下代码时,我得到一个jsonData808 字节的 NSData 对象:

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 中如下所示:

NSData

其中,由于地址奇数,我认为这意味着对象不正确(可能被覆盖?)。

我试图在没有应用程序传输安全开销的情况下找出问题,所以我将 NSAppTransportSecurity 设置如下:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

我还将 CJSONDeserializer 更新到了最新版本。

任何其他建议可能是什么问题。

4

1 回答 1

1

尝试输入错误对象

NSError *error = nil;
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
于 2015-12-23T03:11:28.607 回答