В моей основной структуре данных «Книга» У меня есть логическое свойство «wasViewed» (номер NSNumberWithBool) , который говорит мне, была ли книга «просмотрена».Установка значения свойства для каждого из результатов в наборе FetchedResults
Я хотел бы реализовать своего рода «перезагрузку» этого свойства для всех моих книг NSManagedObjects «Книга». Чтобы я мог установить их для NO между сеансами. Я использую NSPredicate получить все книги, как это:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"wasViewed == %@", [NSNumber numberWithBool:YES]];
// code for setting entity, request etc...
NSMutableArray *mutableFetchResults = [[[managedObjectContext executeFetchRequest:request error:&error] mutableCopy] autorelease];
Это работает очень хорошо, однако, теперь мне нужно создать цикл, каждый объект, книги, что-то вроде этого:
for(Book *b in mutableFetchResults) {
[b setWasViewed:NO]
}
Есть ли способ выполнить действие над каждым элементом, который подходит для предиката вместо его извлечения? Таким образом, вместо executeFetchRequest
на managedObjectContext
это может быть executeOperationOnFetchRequestResults
или что-то в этом роде.
Спасибо за любой вклад дали :)
Привет CJ Спасибо, я был в основном обеспокоен необходимостью получения результатов, которые мне не нужны ни для чего другого, кроме установки единственного свойства в true. Я надеялся, что есть что-то вроде makeObjectsPerformSelector для выборки. Но я предполагаю, что это будет отличаться от того, как вы обычно используете основные данные. Получить и объект, изменить его, сохранить его. Мне нравится ваш «однострочный», он так же легко читается, как петля и более компактный. – RickiG
PS. У меня есть дата «lastViewed», это только для нескольких особых случаев, что также было связано с тем, что мне не нравилось «резервировать» бот за выборку и цикл для нее :). Хороший совет еще! – RickiG