此代码目前列出了我的所有类别。但是,我想过滤此结果以显示特定结果。例如......该阵列包含牙买加,日本,德国和亚洲的项目。我想过滤显示的结果,只显示日本和德国。我读过NSPredicate可以帮助我,但我不太清楚如何在这里实现它。
Datacontroller.M
+(NSArray*) getCategories {
AppDelegate* delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
NSManagedObjectContext* context = delegate.managedObjectContext;
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"StoreCategory" inManagedObjectContext:context];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"created_at" ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescriptor]];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
return fetchedObjects;
}
Categories.m
-(UITableViewCell*)MGListView:(MGListView *)listView1 didCreateCell:(MGListCell *)cell indexPath:(NSIndexPath *)indexPath {
if(cell != nil) {
StoreCategory* cat = [listViewMain.arrayData objectAtIndex:indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.backgroundColor = [UIColor clearColor];
[cell.labelTitle setText:cat.category];
[self setImage:cat.category_icon imageView:cell.imgViewThumb];
}
return cell;
}
答案 0 :(得分:0)
您无法在此方法中过滤不需要的类别,因为indexPath
将是一系列索引。
在调用UITableView
委托或调用DataSource函数之前,您必须构建另一个包含所需类别的数组,例如ViewDidLoad
。
答案 1 :(得分:0)
这种方法似乎可以解决问题。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category CONTAINS[cd] %@ OR category CONTAINS[cd] %@", @"Japan", @"Germany", context];
[fetchRequest setPredicate:predicate];