0

我想在我的 .plist 中阅读,但我的 NSLog 等于“(null)”。这是我的代码:

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:@"data.plist"];

NSLog(@"%@", [plistDict objectForKey:@"id"]);

这是我的.plist:http ://cl.ly/image/2e3P3Q1z2Z1T

4

1 回答 1

2

你的路径是错误的。如果您的 plist 在您的应用程序资源中,那么您必须使用NSBundle它来获取它的绝对路径。

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
NSMutableDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:path] 
                              mutableCopy];

如果它在您应用的文档文件夹中,您可以执行以下操作:

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];

请注意,从 plist 加载的字典或数组始终是不可变的。您必须创建一个可变副本。

于 2012-10-28T20:15:00.210 回答