Конвертировать элементы словаря из списка в NSArray - PullRequest
1 голос
/ 27 июля 2011

У меня есть plist со следующей архитектурой / структурой:

dictionary
   key1
    item1
   key2
    item2
   key3
    item3
dictionary
   ...

, и я хочу загрузить элемент (item1) для первого ключа (key1) каждого словаря в 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 ]

2 голосов
/ 27 июля 2011

Вы можете перебрать массив и добавить объекты следующим образом:

NSMutableArray *tablearray = [NSMutableArray arrayWithCapacity:[array count]];
for (NSDictionary *dict in array) {
    [tablearray addObject:[dict objectForKey:@"key1"]];
}
0 голосов
/ 27 июля 2011

Apple предоставляет руководство по программированию pList , в котором описано, как читать из 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 сейчас.

Я думаю, это то, что вам нужно.

...