Доступ к элементам из словаря plist - PullRequest
1 голос
/ 04 июня 2009

Я пытаюсь использовать список словаря, как показано ниже: alt text

Я прочитал его во временный словарь.

Я хотел бы знать, есть ли простой способ получить строковые дочерние элементы (которые, как вы можете видеть, фактически являются одним элементом в массиве).

Сначала я пытался использовать objectAtIndex, но это, конечно, возвращал массив, а не строковое значение. Затем я попытался использовать NSEnumerator (objectEnumerator), а затем использовать objectAtIndex: 0, чтобы получить строку, которая работает.

Но я действительно надеюсь, что есть более простой способ сделать это.

Редактировать: разъясняю, что я пытаюсь сделать.

Я хочу использовать значения ключей (например, «Все элементы») для заполнения tableview cell.text, а затем использовать строковые значения (например, «find.png»), чтобы помочь заполнить cell.image через UIImage imageNamed: , Я бы предпочел НЕ использовать жестко закодированные значения (такие как objectForKey: @ "All Items"), чтобы я мог изменять данные в plist без внесения изменений в код.

Ответы [ 3 ]

2 голосов
/ 04 июня 2009

Вам нужно вызвать objectForKey: в словаре, чтобы получить один из массивов, а затем вызвать objectAtIndex:0 (или просто lastObject) в массиве, чтобы получить строку. Вы можете объединить эти два вызова метода в одну строку кода, например:

[[dictionary objectForKey:@"All Items"] lastObject];
0 голосов
/ 02 ноября 2011
 NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    // get documents path
    NSString *documentsPath = [paths objectAtIndex:0];
    // get the path to our Data/plist file
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"DecisionName.plist"];
    NSLog(@"Error in dictionary");
    NSLog(@"HELLO");
    NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

    NSArray *testChoice = [[NSArray alloc] initWithArray:[plistDict objectForKey:selectedDecision]];
    self.choices = [testChoice objectAtIndex:0];
    self.preferences = [testChoice objectAtIndex:1];


This code will be helpful which use to get values from plist having following structure......

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <array>
        <string>Toyota</string>
        <string>Honda</string>
    </array>
    <array>
        <string>Speed</string>
        <string>Reliability</string>
        <string>Price</string>
    </array>
</array>
</plist>
0 голосов
/ 04 июня 2009

Вы можете использовать быстрое перечисление словаря:

for (id key in dict) {
    NSArray *array = [dict objectForKey:key];
    NSLog(@"key: %@, value: %@", key, [array objectAtIndex:0]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...