dictionaryWithContentsOfFile返回Nil而不是NSdictionary

时间:2014-07-16 06:19:15

标签: ios

我创建了一个名为Dict.json的文件。该文件的内容是有效的json包含

  

{" MYDATA":[{              " A&#34:4,              " B":14,              " C":7              },              {              " A&#34:4,              " B":12,              " C":7              },              {              " A":34,              " B":154,              " C":6              },              {              " A":34,              " B":162,              " C":6              }]}

我想从这个文件创建一个NSDictonary。我尝试了以下但它返回nil。

  

NSString * filePath = [[NSBundle mainBundle] pathForResource:@" Dict" ofType:@" JSON"];   NSMutableDictionary * newArr1 = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];

我也在检查该文件不是nil;

NSData *myData = [NSData dataWithContentsOfFile:filePath];
if (myData) {
    NSLog("There is Data in File !!!!")  
}

2 个答案:

答案 0 :(得分:2)

要加载json数据,您需要NSJSONSerialization从文件中提取json数据

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Dict" ofType:@"json"]; 
NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
NSMutableDictionary *dic1 = [[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil] mutableCopy];

您的代码仅适用于plist文件,而不适用于json文件。

答案 1 :(得分:0)

来自文档

  

+ (id)dictionaryWithContentsOfFile:(NSString *)path

     

<强>参数

     

路径

     

完整或相对路径名。由path标识的文件必须包含 属性列表 的字符串表示形式,其根对象是字典。

     

返回值

     

包含路径中字典的新字典,如果存在文件错误或文件内容是字典的无效表示,则为nil。

如上所述,您只能使用不是来自.json的plist文件创建字典+ (id)dictionaryWithContentsOfFile:(NSString *)path