Я хочу перебирать все объекты в моем NSManagedObjectContext и обновлять их вручную. Затем каждый управляемый объект должен быть обновлен. Каков наилучший способ сделать это?Итерации через объекты NSManagedObjectContext?
ответ
Теоретически вы можете выполнять итерацию всех описаний сущностей в модели управляемых объектов, создавать для них запрос отсутствия выборки, затем перебирать все возвращаемые объекты и выполнять некоторое обновление. Пример:
// Given some NSManagedObjectContext *context
NSManagedObjectModel *model = [[context persistentStoreCoordinator]
managedObjectModel];
for(NSEntityDescription *entity in [model entities]) {
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entity];
NSError *error;
NSArray *results = [context executeFetchRequest:request error:&error];
// Error-checking here...
for(NSManagedObject *object in results) {
// Do your updates here
}
}
Примечания вы можете отливать NSManagedObjects возвращается по мере необходимости, либо путем тестирования класса равенства (используя isKindOfClass:
или связанный метод) или выяснить, какой класс текущего объекта является (с использованием managedObjectClassName
собственности на entity
в соединение с методом NSClassWithName()
).
Кастинг не требуется, все методы выборки и -объектAtIndex: метод возвращает id. Все свойства в объекте NSManagedObject могут быть доступны через KVC и могут быть запрошены через -doesRespondToSelector: –
Правда, но я склонен расстраиваться с кодом, который усеяно 'isRespondToSelector:' call-casting, хотя и не является строго необходимым, может быть более читабельны в будущем. – Tim
Это похоже на очень тяжелый подход к проблеме. Если данные загружаются с плохими данными, тогда я бы сильно предложил исправить его, пока вы импортируете данные. Ответ Тима будет работать на то, что вы делаете, но я сильно подозреваю, что вы ошибаетесь. Итерация всей базы данных, которая ищет потенциально плохие данные, очень неэффективна.
Я бы согласился с таким подходом гораздо больше, чем ответом, который я опубликовал, - если вы впервые знаете, что данные импортируются «в первый раз», тогда вы сможете исправить это при импорте, а не позже. – Tim
Если управляемые объекты создаются с использованием «неправильных данных», я бы проверял, чтобы вы установили значения по умолчанию в своей модели для всех свойств всех объектов. Таким образом, вы можете быть уверены, что всякий раз, когда вы вставляете объект в свой контекст, он будет содержать эти значения. Оттуда вы можете настроить свойства так, как вам нужно.
- 1. NSManagedObjectContext сохранить появляясь потерять объекты
- 2. Итерации через все текстовые объекты в ListView
- 3. Способ универсальной итерации через объекты в XML?
- 4. Как обновить объекты в основной дате через NSManagedObjectContext в swift?
- 5. Проблемы с освобождением NSManagedObjectContext - (Swift | Связанные объекты)
- 6. Может ли объект NSManagedObjectContext автоматически перехватывать объекты?
- 7. iPhone: передать объекты между объектами NSManagedObjectContext?
- 8. Является ли NSManagedObjectContext автоматически удалять объекты
- 9. Как удалить новые объекты из NSManagedObjectContext
- 10. Как очистить выбранные объекты в NSManagedObjectContext
- 11. Итерации через пользовательские объекты в UIView и найти соответствующие свойства
- 12. Альтернатива использованию флагов при итерации через объекты в python
- 13. Отладка NSManagedObjectContext
- 14. Итерирование через одноразовые объекты
- 15. Итерация через рекурсивные объекты
- 16. Итерации через шестнадцатеричную строку
- 17. итерации через dataframe
- 18. Итерации через хэш-карту?
- 19. ValueError пытается итерации через
- 20. Итерации через подталкивание :: dynamic_bitset
- 21. SQL итерации через массивы
- 22. Java итерации через массив
- 23. Matlab итерации через массив
- 24. Итерации через карту списков?
- 25. Итерации через хэш-таблицу?
- 26. PHP итерации через массивы
- 27. Действия итерации через IList
- 28. понять, итерации через arraylist
- 29. Итерации через дерево AVL
- 30. Итерации через байты NSData
Что вы пытаетесь сделать? Почему, по-вашему, вам нужно это делать? –
Впервые многие объекты создаются с неправильной информацией. Мне нужно вручную исправить это. – cactus