我有这个返回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];
在运行代码时,我检查了包含有效对象的词典:
但是,当我检查磁盘上的文件时,它看起来像一个数组:
<?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>
这是预期的行为吗?我的代码中的其他方法依赖于从该文件中获取字典。
答案 0 :(得分:1)
仅仅因为您声明变量属于NSDictionary
类型并不意味着对JSONObjectWithData
的调用确实返回NSDictionary
。
我的猜测是你从服务器获取的文件实际上是一个包含字典的数组。尝试记录JSONObjectWithData
返回的对象类型,然后再将其保存到文件中:
NSDictionary *schools = [NSJSONSerialization JSONObjectWithData:Data
options:kNilOptions error:nil];
NSLog(@"schools class = %@", [schools class]);