我有一个plist是一个数组,文件名叫startups.plist。我尝试通过以下代码将其读入数组:
NSString *path = [[NSBundle mainBundle] pathForResource:@"startups" ofType:@"plist"];
NSMutableArray * wordList = [[NSMutableArray alloc] initWithContentsOfFile:path];
但是,wordList在这里始终为0。在设备上测试时打印路径,它给了我:
/var/mobile/Applications/CCBF94D9-389C-4D63-B023-F39653FDCEF4/My.app/startups.plist
以下是plist的结构:
数组的大小为0。 我在这里做错了什么?
答案 0 :(得分:2)
initWithContentsOfFile:
不会打开plist文件。以下是一个示例:
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *path = [[NSBundle mainBundle] pathForResource:@"startups" ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:path];
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
propertyListFromData:plistXML
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&errorDesc];
NSLog(@"%@",[temp objectForKey:@"Root"]);
答案 1 :(得分:1)
你必须使用NSDictionary
因为你的plist是一个字典,它有一个关键的Root是一个数组。
NSString *path = [[NSBundle mainBundle] pathForResource:@"startups" ofType:@"plist"];
NSMutableDictionary * dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *wordList = (NSMutableArray *)[dict objectForKey:@"Root"];
我不确定是否会投射到NSMutableArray
。也许你必须这样做
NSMutableArray *wordList = [NSMutableArray arrayWithArray:(NSArray*)[dict objectForKey:@"Root"]]