IOS/Objective-C:使用对象数组搜索字符串元素
IOS/Objective-C: Search string element with array of objects
作为自动完成框的一部分,我正在一组联系人中搜索姓名。但是,在用户从建议列表中选择一个姓名后,我需要获取联系人对象数组中的联系人 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];
}
创建一个 Contact
对象。给它一个 name
属性、一个 id
属性 以及您需要的任何其他属性。然后编写代码来搜索 Contact
对象数组,而不仅仅是名称数组。然后,您可以使用 predicateWithBlock 创建一个谓词来过滤与您的名字匹配的项目 属性.
作为自动完成框的一部分,我正在一组联系人中搜索姓名。但是,在用户从建议列表中选择一个姓名后,我需要获取联系人对象数组中的联系人 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];
}
创建一个 Contact
对象。给它一个 name
属性、一个 id
属性 以及您需要的任何其他属性。然后编写代码来搜索 Contact
对象数组,而不仅仅是名称数组。然后,您可以使用 predicateWithBlock 创建一个谓词来过滤与您的名字匹配的项目 属性.