Доступ к значениям в двумерном NSArray в Objective-c - PullRequest
0 голосов
/ 05 декабря 2018

Для следующего двумерного массива я хотел бы найти имена, скажем, John, а затем получить имя John Smith и идентификатор для John.

NSArray *employees = @[@[@"John Smith",@"1"],@[@"Ken Robinson",@"2"],@[@"Albert Jones",@"3"],@[@"Richard Johnson",@"4"]];

Я могу создатьмассив, используя вышеуказанный синтаксис.Как мне найти Джона и найти Джона Смита, 2, и получить доступ к идентификатору сотрудника, 2, что-то вроде employees[0][1], где 0 - это индекс, а 1 - это измерение для идентификатора.

Вот как бы яискать в массиве в одном измерении, но я запутался в синтаксисе для поиска в двумерном массиве.

-(NSString *)findNameInArray:(NSString*) searchstring
NSArray* employees = @[@"John Smith"@"Ken Robinson",@"Albert Jones",@"Richard Johnson"];
for (long i=0;i<[employees count];i++) {
            name = employees[i];
            if ( [name localizedCaseInsensitiveCompare:searchstring] == NSOrderedSame) {
                return name;
            }//close loop
return @"":
    }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Да, NSPredicate является лучшим решением в этом случае.

0 голосов
/ 06 декабря 2018

Может быть, есть веская причина иметь массив массивов.Если это так, вы можете отфильтровать внешний массив с помощью предиката, который применяется к внутреннему массиву ...

// look for @"John" anywhere in the 1st element (case insensitive)
NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF[0] CONTAINS[cd] %@", @"John"];
NSArray *matches = [employees filteredArrayUsingPredicate:p];

Вы также можете найти совпадение с началом строки с помощью BEGINSWITH

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