IOS/Objective-C:使用对象数组搜索字符串元素

IOS/Objective-C:使用对象数组搜索字符串元素,ios,nsarray,nspredicate,Ios,Nsarray,Nspredicate,作为自动完成框的一部分,我在联系人数组中搜索姓名。但是,在用户从建议列表中选择姓名后,我需要获取联系人的id,该id位于联系人对象数组中,而不是出现在建议框中的姓名数组。我一直只处理姓名,因为这是我想在建议框中显示的姓名,但也有一系列联系人 我将如何转换下面的代码可能使用键值搜索对象数组的名称维度,而不是名称数组,以便跟踪对象的ID。我对数组和键值有点模糊 //the array being searched looks something like @[@"John", @"Dave", @

作为自动完成框的一部分,我在联系人数组中搜索姓名。但是,在用户从建议列表中选择姓名后,我需要获取联系人的id,该id位于联系人对象数组中,而不是出现在建议框中的姓名数组。我一直只处理姓名,因为这是我想在建议框中显示的姓名,但也有一系列联系人

我将如何转换下面的代码可能使用键值搜索对象数组的名称维度,而不是名称数组,以便跟踪对象的ID。我对数组和键值有点模糊

//the array being searched looks something like  @[@"John", @"Dave", @"Sam", @"Xian", @"Ahmed", @"Johann"];

//I want to search the names in an array that looks something like:

(
        {
        first = "John";cid = 2;},
        {
        first = "Dave";cid = 44;},
        {
        first = "Xian";cid=99})
//this code works great to search names but I lose track ids. Thank you for any suggestions.

-(void)searchArray: (NSMutableArray*) array forString: (NSString *) term {
    [_contactsSuggested removeAllObjects];      
      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",term]; 
    NSArray *tempArray = [array filteredArrayUsingPredicate:predicate];
    _contactsSuggested = [NSMutableArray arrayWithArray:tempArray];
    [_autocompleteTableView reloadData];
}

创建一个联系人对象。给它一个name属性、id属性和您需要的任何其他属性。然后编写搜索联系人对象数组而不仅仅是名称数组的代码。然后,您可以使用predicateWithBlock创建谓词,以筛选与name属性匹配的项目。

您可以创建联系人模型。