Основные данные / Обновление диапазона - PullRequest
0 голосов
/ 24 сентября 2011

Вот простой запрос mySQL:

UPDATE myTable SET X=X-1 WHERE (X>100)

Теперь мой вопрос выглядит так.Как мне написать аналогичный запрос в Core Data?

Я начинаю выяснять свой путь в Core Data;но последняя часть вышеупомянутого порядка SQL вызывает у меня проблемы с Core Data.

Другими словами: как мне обработать часть WHERE (X>100).

Если запрос mySQL касается только одной записиЯ хотел бы использовать что-то вроде этого:

[matchItem setValue:VALUE forKey:@"X"];

Но как мне это сделать, если есть диапазон записей, как здесь, где я хочу выполнить некоторые действия для всех записей, где X> 100.

1 Ответ

3 голосов
/ 24 сентября 2011

Используйте NSPredicate и добавьте его к вашему NSFetchRequest.

NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"X > %@", [NSNumber numberWithInt:100]];

Выполните итерацию по массиву результатов и установите соответствующее значение.

for (NSManagedObject *match in resultsArray) {
    NSInteger newValue = [[match objectForKey:@"X"] intValue] +1;
    [match setValue:[NSNumber numberWithInt:newValue] forKey:@"X"];
}
...