добавление текста из списка NSString с несколькими словами - PullRequest
0 голосов
/ 07 ноября 2011

Я использовал следующее для создания массива из списка словарей:

self.cough = [NSMutableArray arrayWithCapacity:[ailments count]];
NSDictionary* dict;
for (dict in ailments)
    if ([[dict valueForKey:@"section"]isEqualToString:@"coughing"])[cough addObject:dict];

Формат списка:

section:    coughing
name:       Common Cold

Проблема в том, что яИмея, и я подозреваю, что это легко, если я хочу иметь «Простуду» в другом разделе, например «Головная боль», я мог бы создать другой объект недуг для нового раздела, но он испортит мой результат поиска, показывая 2Записи простуды (от "Кашель" и "Головная боль").

Что я хотел бы сделать:

section:    coughing, headache
name:       Common Cold

Что бы я использовал вместо isEqualToString: для созданиядва разных массива, один для "кашля" и другой для "головной боли"?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011
NSMutableDictionary *ailmentsBySection = [NSMutableDictionary dictionary];
[ailmentsBySection addObject:[NSMutableArray array] forKey:@"coughing"];
[ailmentsBySection addObject:[NSMutableArray array] forKey:@"headache"];
NSCharacterSet *whitespace = [NSCharacterSet whitespaceCharacterSet];
for (NSDictionary *ailment in ailments) {
    NSString *sections = [ailment objectForKey:@"section"];
    for (NSString *section in [sections componentsSeparatedByString:@","]) {
        section = [section stringByTrimmingCharactersInSet:whitespace];
        [[ailmentsBySection objectForKey:section] addObject:ailment];
    }
}

Обратите внимание, что любое сообщение отправлено на ноль, поэтому нормально, если section окажется чем-то отличным от coughing или headache.С другой стороны, вы также можете динамически добавлять новые ключи к ailmentsBySection по мере их нахождения, вместо того, чтобы просто разрешать coughing и headache.

0 голосов
/ 07 ноября 2011

Похоже, что вы вручную проверяете тип раздела. Если вы хотите продолжить этот путь, все, что вам действительно нужно сделать, это проверить и посмотреть, содержит ли строка раздела подстроку конкретного раздела, для которого вы оцениваете:

Как проверить, содержит ли строка другую строку в Objective-C?

Однако вместо того, чтобы статически определять, какие имена разделов вы ищете, может быть полезно подумать о попытке динамического получения имен / типов разделов из вашего списка, а затем сортировки по этим разделам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...