ave*_*ged 13 iphone core-data nspredicate nsfetchedresultscontroller
是否可以采用现有的NSPredicate并为其添加额外的参数?
在我的一个tableviews中,我传递的是NSPredicate,用于我的NSFetchedResultsController,如下所示:
[fetchedResults setPredicate:self.predicate];
Run Code Online (Sandbox Code Playgroud)
这工作正常,将根据现有的NSPredicate显示内容.但我想通过向tableView添加UISegmentedControl来更进一步.
- (IBAction)segmentChange:(id)sender {
switch (selectedSegment) {
case kDisplayDVD:
// Add argument to existing NSPredicate
break;
case kDisplayVHS:
// Add argument to existing NSPredicate
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
根据用户选择的细分,我想在现有的NSPredicate中添加一个参数.这是可能吗?
Dav*_*ong 45
当然!
比方说,你的对象有一个属性称为display这是一个int(或者更确切地说,对应于你的一个枚举kDisplayDVD,kDisplayVHS等等).然后你可以这样做:
- (IBAction) segmentChange:(id)sender {
NSPredicate * newCondition = [NSPredicate predicateWithFormat:@"display = %d", selectedSegment];
NSPredicate * newPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:[self predicate], newCondition, nil]];
[self setPredicate:newPredicate];
}
Run Code Online (Sandbox Code Playgroud)
所以,如果[self predicate]是(foo = @"bar" OR baz > 42),你的新谓词将是display = 1 AND (foo = @"bar" OR baz > 42)
| 归档时间: |
|
| 查看次数: |
3929 次 |
| 最近记录: |