Fuz*_*zej 2 comparison search cocoa-touch objective-c tableview
我正在使用此代码在我的tableview中搜索:
for (Actor *actorz in arr)
{
NSComparisonResult result = [actorz.actorNaam compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:[actorz.actorNaam rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]];
if (result == NSOrderedSame)
{
[self.filteredListContent addObject:actorz];
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道如何不仅可以将searchText与actorz.actorNaam进行比较,还可以将其与actorz.actorBeschrijving进行比较?所以我想将searchText与两个字符串进行比较..
如果找不到字符串,则NSString返回an 的搜索方法NSRange设置为location NSNotFound.
因此,您可以通过验证结果位置不是 来检查是否找到了字符串NSNotFound.它可能听起来有点倒退,但逻辑是坚实的(两个否定,可以这么说).
NSRange nameResult = [actorz.actorNaam rangeOfString:searchText options:NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch];
NSRange descrResult = [actorz.actorBeschrijving rangeOfString:searchText options:NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch];
if ( nameResult.location != NSNotFound || descrResult.location != NSNotFound ) {
[self.filteredListContent addObject:actorz];
}
Run Code Online (Sandbox Code Playgroud)
请注意,此代码段将查找包含搜索字符串的名称,而不仅仅是名称相等.您可能希望使用原始代码更改它.你当然必须删除nameResult,因为它是多余的:
NSComparisonResult result = [actorz.actorNaam compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:[actorz.actorNaam rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]];
NSRange descrResult = [actorz.actorBeschrijving rangeOfString:searchText options:NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch];
if ( result == NSOrderedSame || descrResult.location != NSNotFound ) {
[self.filteredListContent addObject:actorz];
}
Run Code Online (Sandbox Code Playgroud)
但是,有一种更简单的方法.考虑使用谓词:
NSPredicate *actorPred = [NSPredicate predicateWithFormat:@"actorNaam contains[cd] %@ OR actorBeschrijving contains[cd] %@", searchText, searchText];
self.filteredListContent = [arr filteredArrayUsingPredicate:actorPred];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4646 次 |
| 最近记录: |