Ios Objective-c中二维NSArray中的访问值
对于下面的二维数组,我想搜索say John的名字,然后能够检索John Smith的名字和John的idIos Objective-c中二维NSArray中的访问值,ios,objective-c,nsarray,Ios,Objective C,Nsarray,对于下面的二维数组,我想搜索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,类似于员工[0][1],其中0是索引,1是id的维
NSArray *employees = @[@[@"John Smith",@"1"],@[@"Ken Robinson",@"2"],@[@"Albert Jones",@"3"],@[@"Richard Johnson",@"4"]];
我可以使用上述语法创建数组。我如何搜索John并检索John Smith,2并访问员工id,2,类似于员工[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 @"":
}
-(NSString*)FindNameArray:(NSString*)searchstring
NSArray*员工=@[@“约翰·史密斯”@“肯·罗宾逊”@“艾伯特·琼斯”@“理查德·约翰逊”];
对于(long i=0;i可能有一个很好的理由使用数组数组。如果是这样,您可以使用应用于内部数组的谓词筛选外部数组
// 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
找到字符串开头的匹配项,也许有一个很好的理由使用数组数组。如果是这样,您可以使用应用于内部数组的谓词筛选外部数组
// 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是最佳解决方案。是的,NSPredicate是这种情况下的最佳解决方案。为什么您首先有一个数组而不是字典数组,类似这样:@[@“id”:@“1”,@“name”:@“John Smith”}、{“id”:“2”、@“name”:“Ken Robinson”}]
或自定义对象数组“等效”?最好在for循环中设计:name=employees[i];
变成:NSArray*person=employees[i];NSString*name=person[0];if([name localizedCase…{return person}
数组是一个糟糕的数据结构选择。拥有一个类数组,其中类具有名称和数字的属性。这将使许多事情变得更简单。为什么你首先拥有数组数组,而不是字典数组,类似这样:@[@{@“id”:@“1”,“@“name”:@“John Smith”},@{@“id”“:@”2“,@”name:@“Ken Robinson”}]
,或自定义对象数组“等效”?最好在for循环中设计:name=employees[i];
been:NSArray*person=employees[i];NSString*name=person[0];if([name localizedCase…{return person}
数组是一个糟糕的数据结构选择。在类具有名称和编号属性的情况下,使用一个类数组。这将使许多事情变得更简单。