Использование NSPredicate с основными данными NSFetchedResultsController - PullRequest
1 голос
/ 17 января 2010

У меня есть fetchedResultsController, который возвратил все записи для моей сущности "Учетная запись".

Я хотел бы быстро найти во всех записях Учетной записи атрибут "valueName" == value и вернуть мне Учетную записьобъект или, по крайней мере, indexPath объекта в fetchedResultsController.Должен быть возвращен только 1 объект.

Кроме итерации по каждому объекту AtIndexPath, есть ли лучший способ поиска fetchController с использованием NSPredicate?

Ответы [ 2 ]

8 голосов
/ 17 января 2010

mootymoots, просто отфильтруйте извлеченные объекты с помощью другого предиката ...

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

Это оставляет ваши fetchedResultsController результаты без изменений, но дает вам массив с соответствием для предиката фамилии.

3 голосов
/ 17 января 2010
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
...