当我试图阅读我的plist时,我遇到了一个非常奇怪的错误。 我的plist看起来像:
Root (Array)
Item 0 (Dictionary)
title (String)
我想在日志中显示title
,所以我做了以下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSString *path = [basePath stringByAppendingPathComponent:@"data.plist"];
NSMutableDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy];
NSLog(@"%@", [dict objectForKey:@"title"]);
NSLog(@"Path to plist: %@", path);
使用此代码,NSLog(@"%@", [dict objectForKey:@"title"]);
等于“(null)
”...
我的plist在我的app的文档文件夹中,path
的日志返回了我的plist的好路径。
请帮帮我:)。
答案 0 :(得分:0)
你的plist的根是一个数组,但你把它读成字典,那是行不通的。
你应该:
答案 1 :(得分:0)
正如@Tom所说,(正如你在第一个代码块中所说的那样),plist的根是一个数组。
您可以使用以下方式非常类似地加载数组:
NSArray *array = [NSArray arrayWithContentsOfFile:path];
然后你可以像这样访问索引0(字典)中的项目:
NSDictionary *dict = [array objectAtIndex:0];
或者从Xcode 4.4开始,使用新的数组文字:
NSDictionary *dict = array[0];
然后按照您的尝试记录标题:
NSLog(@"%@", [dict objectForKey:@"title"]);
或使用新语法:
NSLog(@"%@", dict[@"title"]);