1

我有一个 fetchedResultsController 已返回我的实体“帐户”的所有记录。

我想快速搜索所有 Account 记录中的属性“lastName”== 值,并返回 Account 对象,或者至少返回 fetchedResultsController 中对象的 indexPath。应该只返回 1 个对象。

除了遍历每个 objectAtIndexPath 之外,还有没有更好的方法来使用 NSPredicate 搜索 fetchController?

4

2 回答 2

8

mootymoots,只需使用另一个谓词过滤获取的对象...

NSPredicate *lastNameMatch = ...
NSArray *matchingFetchedObjects = [fetchedResultsController.fetchedObjects filteredArrayUsingPredicate:lastNameMatch];

这使您的fetchedResultsController结果保持不变,但为您提供了一个与姓氏谓词匹配的数组。

于 2010-01-17T19:52:00.613 回答
4
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// set up fetch request
...
NSPredicate *requestPredicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(lastName like '%@')", self.lastName]];
[fetchRequest setPredicate:requestPredicate];
...
// perform fetch
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) { 
    // handle error...
}

...

Account *uniqueAccount = [[self.fetchedResultsController fetchedObjects] anyObject]; // assuming lastName attribute is unique
于 2010-01-17T19:10:26.030 回答