在 Objective-c 中访问二维 NSArray 中的值

Access values in two dimensional NSArray in Objective-c

对于以下二维数组,我想搜索 say John 的姓名,然后能够检索姓名 John Smith 和 John 的 ID。

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

我可以使用上面的语法创建数组。我将如何在其中搜索 John 并检索 John Smith, 2 并访问员工的 ID, 2, 类似于 employees[0][1] ,其中 0 是索引,1 是 id 的维度。

这是我在一维中搜索数组的方式,但我对使用二维数组进行搜索的语法感到困惑。

-(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 @"":
    }

也许有一个很好的理由来拥有一个数组数组。如果是这样,您可以使用适用于内部数组的谓词过滤外部数组...

// 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

找到字符串开头的匹配项

是的,NSPredicate 是这种情况下的最佳解决方案。