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 に答える