NSDictionary突然变成了NSArray

时间:2016-01-13 15:05:15

标签: ios nsarray nsdictionary

我有这个返回JSON的URL。我按如下方式将JSON写入字典:

NSData* Data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
NSDictionary *schools = [NSJSONSerialization JSONObjectWithData:Data options:kNilOptions error:nil];

然后,我将该Dictionary写入文件:

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"schools.plist"];    
[schools writeToFile:filePath atomically:YES];

在运行代码时,我检查了包含有效对象的词典:

enter image description here

但是,当我检查磁盘上的文件时,它看起来像一个数组:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>Id</key>
        <string>ffefe0f7-23bf-471f-8e99-58ada0229921</string>
        <key>Name</key>

这是预期的行为吗?我的代码中的其他方法依赖于从该文件中获取字典。

1 个答案:

答案 0 :(得分:1)

仅仅因为您声明变量属于NSDictionary类型并不意味着对JSONObjectWithData的调用确实返回NSDictionary

我的猜测是你从服务器获取的文件实际上是一个包含字典的数组。尝试记录JSONObjectWithData返回的对象类型,然后再将其保存到文件中:

NSDictionary *schools = [NSJSONSerialization JSONObjectWithData:Data 
  options:kNilOptions error:nil];
NSLog(@"schools class = %@", [schools class]);