将字典项从plist转换为NSArray

时间:2011-07-27 12:04:09

标签: objective-c ios dictionary nsarray plist

我有一个具有以下架构/结构的plist:

dictionary
   key1
    item1
   key2
    item2
   key3
    item3
dictionary
   ...

我希望将每个字典的第一个键(key1)的item(item1)加载到NSArray,这样我就可以将nsarray加载到UITableView中。

我想到了这一点:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];

    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];

然后我想添加这样的东西:

tablearray = [array objectsForKey:@"key1"];

但是这不作为命令存在。好像我需要一些帮助...... :)。

2 个答案:

答案 0 :(得分:2)

您可以遍历数组并以这种方式添加对象:

NSMutableArray *tablearray = [NSMutableArray arrayWithCapacity:[array count]];
for (NSDictionary *dict in array) {
    [tablearray addObject:[dict objectForKey:@"key1"]];
}

答案 1 :(得分:0)

Apple提供pList programming guide,它描述了如何从pList读取并写入其中。你可以去看看吧。

我们将从pList获取数据作为NSData,并使用以下方法将其转换为NSDictionary,

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];

NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization 
            propertyListFromData:plistXML 
            mutabilityOption:NSPropertyListMutableContainersAndLeaves 
            format:&format 
            errorDescription:&errorDesc]; 

您可以使用

添加响应字典来引入数组
NSMutableArray * myArray = [NSMutableArray alloc] init];

//temp is the response dictionary
NSArray * myKeys = [temp allKeys];
for (int index = 0; index<[myKeys count]; index++) {


id value = [temp valueForKey:[myKeys objectAtIndex:index]];
[myArray addObject:value];

}

现在使用myArray。

我认为这就是你所需要的。