我的问题是:
当我进行搜索时,我想搜索联系人的姓名。目前我正在研究字符串值
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchText];
它完美无缺,但现在,我不会以联系人的名义进行研究。我该怎么办?
我说的时候:
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@",searchText];
我有一个错误:
erminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x8d76100> valueForUndefinedKey:]: <br/><br/>this class is not key value coding-compliant for the key name.' .
在我班上联系我:
@property NSString * name;
@property NSString * display_name;
@property NSString * phone;
@property NSString * mobile;
有人可以一步一步地讲述如何使用包含ojetcs的nsmutablearray进行研究?
答案 0 :(得分:2)
试试这个
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@ OR display_name contains[cd] OR phone contains[cd] OR mobile contains[cd]", searchText];
答案 1 :(得分:2)
对阵列使用谓词
NSArray和NSMutableArray提供了过滤数组内容的方法。 NSArray提供filteredArrayUsingPredicate:它返回一个新数组,其中包含接收器中与指定谓词匹配的对象。 NSMutableArray提供filterUsingPredicate:它根据指定的谓词计算接收者的内容,只留下匹配的对象。
NSMutableArray *array =
[NSMutableArray arrayWithObjects:@"Nick", @"Ben", @"Adam", @"Melissa", nil];
NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'a'"];
NSArray *beginWithB = [array filteredArrayUsingPredicate:bPredicate];
// beginWithB contains { @"Adam" }.
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'e'"];
[array filterUsingPredicate:sPredicate];
// array now contains { @"Nick", @"Ben", @"Melissa" }
如果您使用Core Data框架,则数组方法提供了一种有效的方法来过滤现有的对象数组,而不需要进行提取 - 需要往返持久性数据存储。
此处LINK详细信息
答案 2 :(得分:1)
如果你尝试会发生什么:
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"name == %@", searchText];
NSArray *temp = [YOUR_ARRAY filteredArrayUsingPredicate:filterPredicate]; ?
修改强>
试试这个:
NSMutableArray *searchResults = [[NSMutableArray alloc] init];
[YOUR_ARRAY enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
Contact *contact = obj;
if ([[contact name] isEqualToString:searchText])
[searchResults addObject:contact];
}];
//The search results array should now contain the matching items:
NSLog(@"Search Results:%@", searchResults);