iOS 9.2 崩溃 [[CJSONDeserializer 反序列化器] deserializeAsDictionary :

标签 ios objective-c json app-transport-security ios9.2

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

NSData

因为奇怪的地址,我认为这意味着对象不正确(也许被覆盖了?)。

我试图在没有 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/

相关文章:

ios - 在两个iPhone之间复制核心数据数据库

iphone - AVAudioRecorder Record 方法随机返回 NO

ios - 在 reloadData 上禁用 UICollectionView 动画

json - 如何使用cuelang对json文件进行验证?

java - 如何在 JSON 响应中仅获取实体 ID 而不是整个实体

java - 使用 Jersey 将 JSON 字符串转换为 Java 对象

ios - 从 [PFObject] 向下转换为 [PFObject]

objective-c - 在 Objective-C 中测试 null?

ios - Swift3 淡入/淡出或平滑过渡 UIImageView 动画图像

objective-c - +(void)load 的单例安全性