Цель C plist поиск и случайный ввод - PullRequest
0 голосов
/ 12 июля 2011

еще пара вопросов о списках и цели c для iphone.Оба вопроса относятся к моему списку, который можно увидеть в моем последнем последнем вопросе .

Первое, что нужно сделать с поиском, я знаю, что это возможно, но как правильно поступитьэтот?Должен ли я вытащить все доступные для поиска объекты в массив и использовать это для создания таблицы?Или же можно перебрать список и просто показать совпадения?Или есть какой-то другой способ, которым я здесь скучаю?В качестве быстрого примера в следующем я хотел бы вернуть два результата «Джонса»:

<dict>
    <key>A</key>
    <array>
        <string>A Jones</string>
        <string>A King</string>
    </array>
    <key>T</key>
    <array>
        <string>T Jones</string>
        <string>T King</string>
    </array>

Во-вторых, можно ли вызвать случайный результат из списка, я уверен, что этоесть, но опять же, каков будет правильный путь для этого?

Я признаю, что находить этот список немного болезненным, так как мне кажется, что это немного мусорная форма XML.И я все еще нахожу итерацию по списку списков рассылки в некоторой степени запутывающей.Тем не менее, любые мысли по этим двум вопросам будут с благодарностью.

Спасибо:)

1 Ответ

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

Очевидно, что можно перебирать значения NSDictionary, используя -(NSEnumarator *)objectEnumerator;, вы также можете получить все значения с помощью -(NSArray *)allValues;, и вы также можете посмотреть на -(NSSet *)keysOfEntriesPassingTest:(BOOL (^)(id key, id obj, BOOL *stop))predicate;, который возвращает NSSet, содержащий ключи для значения прошли тест (из Mac OS X 10.6).

Что касается второго вопроса, я думаю, что нет лучшего способа. Вот как бы я это сделал:

  1. Получить все ключи NSDictionary, используя -(NSArray *)allKeys;
  2. Получить случайное число
  3. Подберите ключ в массиве, используя -(id)objectAtIndex:(NSUInteger)anIndex;
  4. Получить соответствующий объект в словаре, используя: -(id)objectForKey:(id)aKey;

Тогда вы получили свой объект. Надеюсь, это поможет.

EDIT:

Вот простой способ перебора значений в NSDictionary:

// assuming you already have a well initialized dictionary
// first create a container
NSMutableArray *selectedObjects = [[NSMutableArray alloc] init];
// then retrieve an enumerator for the dictionary
NSEnumerator *e = [theDictionary objectEnumerator];
id anObject;
// iterate...
while((anObject = [e nextObject]) != nil) {
    // do what you want with the object
    // in your case each object is an array
    NSArray *theArray = (NSArray *)anObject;
    // ...
    // if you find any of them interesting put it in the first array
    if([[theArray objectAtIndex:0] isEqualToString:@"Jones"]) {
        [selectedObjects addObject:[theArray objectAtIndex:0]];
    }
}
// here are the selected objects in selectedObjects.
// you won't forget to release selectedObjects when you don't need it anymore
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...