Как использовать предикат с nsdictionary?

У меня есть словарь в другом словаре в моем plist, как показано ниже:

    <dict1>Root
         <dict2>A
             <dict3>Apple
                   <string>"About Apple..."
             <dict3>Arrow
                   <string>"About Arrow..."
         <dict2>B
             <dict3>Ball
                   <string>"About Ball..."
         <dict2>C

                     etc...

В настоящее время пользователь использует панель поиска для поиска строки. Как я могу посмотреть на третий уровень и сравнить каждую строку с помощью предиката и вернуть результаты и передать их в ячейки табличного представления?

Я пытался следовать этому видеоуроку, но не смог выполнить предикат.

https://www.youtube.com/watch?v=UE4h_Td6W6U

Насколько я вижу, он записал свой словарь в массив. Моя кажется немного сложнее.

Я новичок в этом, поэтому любая помощь будет оценена.


person hitme    schedule 01.07.2014    source источник


Ответы (1)


Вам нужно перемещаться по списку словарей, пока не дойдете до словаря, который вы ищете. Это выглядит примерно так:

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"YOURPLIST" ofType:@"plist"];
    NSMutableDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath]; //This puts you into the root directory
    NSMutableDictionary *secondLevel = [NSMutableDictionary dictionaryWithDictionary:[dictionary objectForKey:[NSString stringWithFormat:@"A"]]]; //or B or C etc
    NSMutableDictionary *thirdLevel = [NSMutableDictionary dictionaryWithDictionary:[dictionary objectForKey:[NSString stringWithFormat:@"Apple"]]]; 

Это поместит вас в словарь Apple, однако, чтобы получить строку, вам нужен прикрепленный к ней ключ. Ваш словарь должен выглядеть так

    <key>Some key name</key>
    <string>About Apple...</string>

И тогда вы можете получить строку с помощью ключа через:

    NSString *string = [thirdLevel objectForKey:@"Some key name"];

Если вы строго ищете строки, вы можете сделать что-то вроде этого строка поиска в NSDictionary хранить в NSMutableArray

person Alex J    schedule 01.07.2014