-(void) vUpdateHistoryAndSuggestionEntries
{
NSArray * potentialHistory = [[self class] arHistory];
}
potentialHistory是NSString
个对象的数组。
我想过滤仅以不区分大小写的方式开头的元素,例如@“Cat”。例如,
如果NSArray包含
凯西 猫 狗
然后我想要一个包含
的数组凯西 猫
我认为NSPredicate对此非常理想。任何其他方式都可以。
有类似的问题。但是,在那些问题中,NSArray包含字典。我想根据数组的实际元素而不是数组元素的元素进行过滤。
答案 0 :(得分:2)
NSArray *yourArray;
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'C'"];
NSArray *theFilteredArray = [yourArray filteredArrayUsingPredicate:aPredicate];
希望这会对您有所帮助。
答案 1 :(得分:0)
以下是如何使用NSPredicate的示例:
NSArray *sampleArray = @[@"Cathy", @"Cat", @"Dog"];
NSArray *filteredSampleArray = [sampleArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self contains[c] %@",@"ca"]];
NSLog(@"%@",filteredSampleArray);
这将输出:
( 凯蒂, 猫 )
答案 2 :(得分:0)
NSString *filterStr = [NSString stringWithFormat:@"name LIKE[c] '*%1$@*'",searchStr];
NSPredicate *predicate = [NSPredicate predicateWithFormat:filterStr];
NSMutableArray *tempArray = [yourArrayofNames filteredArrayUsingPredicate:predicate];
//此处name是您的属性,yourArrayofNames是您的对象数组。
答案 3 :(得分:-1)
您不需要NSPredicate
就可以了。
for (NSString* item in arHistory){
if ([item rangeOfString:@"cat" options:NSCaseInsensitiveSearch].location == 0){//occurs at beginning
[potentialHistory addObject:item];
}
}
编辑:如果potentialHistory是不可变的,请使用另一个数组来存储这些和init
potentialHistory。
NSArray* potentialArray = [NSArray arrayWithArray:(NSArray*)array]