我有一个NSArray,我从我的数据库中取出,我正在使用有点蛮力的解决方案,我需要修改我的数据库的每个元素的内容。我正在使用这个NSPredicate来过滤我的数组
NSArray *array = [haveIngArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ANY %@ contains[cd] self", recipeIngredientsArray]];
其中recipeIngredientArray是来自user的输入,hasIngArray是获取的内容。
这是我数据库内容的一个示例
1 piece of chicken breast
3 spoon of wheat
6 glass of water
1 can of corn
1 glass of lemon juice
salt
我会将输入与来自数据库的内容进行比较,但我不需要比较某些东西,如盐,水,胡椒。如何从我的数组中删除这些,以便我可以使用我的真实过滤器?
我尝试使用NSPredicate来包含并删除原始数组中的相同对象,但这会导致性能问题。
答案 0 :(得分:0)
跳这有助于你...... 只需将您的数据库放入MutableArray,然后用您想要的任何单词过滤它
//enter the words you want to filter by
NSArray *filterArray = @[@"water",@"salt"];
NSArray *dataBaseArray = @[@"1 piece of chicken breast", @"3 spoon of wheat", @"6 glass of water", @"1 can of corn", @"1 glass of lemon juice",@"1 piece of chicken breast", @"3 spoon of wheat", @"6 glass of water", @"1 can of corn", @"1 glass of lemon juice"];
// this is the array that get the records from the DB
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
for (int i=0; i <dataBaseArray.count; i++) {
NSString *str = dataBaseArray[i];
BOOL found = NO;
for (NSString *word in filterArray) {
if ([str rangeOfString:word].location != NSNotFound)
{
found = YES;
}
}
if (!found) {
[tempArray addObject:str];
}
}
dataBaseArray = [[NSArray alloc]initWithArray:tempArray];