0
-(void) vUpdateHistoryAndSuggestionEntries
{
    NSArray * potentialHistory = [[self class] arHistory];
}

potentialHistory 是一个NSString对象数组。

我只想以不区分大小写的方式过滤以 @"Cat" 开头的元素。例如,

如果 NSArray 包含

凯茜猫狗

然后我想要一个包含

凯茜猫

我认为 NSPredicate 非常适合这个。任何其他方式也可以。

有类似的问题。但是,在这些问题中, NSArray 包含字典。我想根据数组的实际元素而不是数组元素的元素进行过滤。

4

4 回答 4

2
NSArray *yourArray;
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'C'"];
NSArray *theFilteredArray = [yourArray filteredArrayUsingPredicate:aPredicate];

希望这会帮助你。

于 2013-10-01T08:11:04.370 回答
0

下面是一个如何使用 NSPredicate 的示例:

NSArray *sampleArray = @[@"Cathy", @"Cat", @"Dog"];
NSArray *filteredSampleArray = [sampleArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self contains[c] %@",@"ca"]];
NSLog(@"%@",filteredSampleArray);

这将输出:

(凯茜,猫)

于 2013-10-01T08:12:21.843 回答
0
NSString *filterStr = [NSString stringWithFormat:@"name LIKE[c] '*%1$@*'",searchStr];
NSPredicate *predicate = [NSPredicate predicateWithFormat:filterStr];
NSMutableArray *tempArray = [yourArrayofNames filteredArrayUsingPredicate:predicate];

//这里 name 是你的属性,yourArrayofNames 是你的对象数组。

于 2013-10-01T10:34:45.713 回答
-1

你不需要NSPredicate这个。

for (NSString* item in arHistory){

    if ([item rangeOfString:@"cat" options:NSCaseInsensitiveSearch].location == 0){//occurs at beginning

        [potentialHistory addObject:item];
    }
}

编辑:如果 potentialHistory 是不可变的,请使用另一个数组来存储这些和initpotentialHistory。

NSArray* potentialArray = [NSArray arrayWithArray:(NSArray*)array]
于 2013-10-01T08:13:31.397 回答