2012-02-28 4 views
0

Вот мой код:Основные данные: когда NSManagedObject вставлен в контекст и сохранен?

for (NSString *filePaths in self.filesAdded) { 
     FileAttachments *fileObject = [NSEntityDescription insertNewObjectForEntityForName:@"FileAttachments" inManagedObjectContext: context]; 
     fileObject.fileName = filePaths; 
} 

NSLog(@"before context->save"); 
if (![context save:&error]) ... 

Я пытаюсь найти точку, когда NSManagedObject является сохранен в контексте после того, как вставляется в первый раз. Кажется, awakeFromInsert вызывается, когда вы вызываете [NSEntityDescription insertNewObjectForEntityForName], что слишком рано, так как ни одно из свойств. Я хочу знать, когда [context save: error] вызывается для тех новых NSManagedObject s, поэтому я могу сэкономить еще метаинформацию. Есть ли хороший, чистый способ сделать это? Что-то вроде prepareForDeletion, которое идеально подходит для очистки объектов.

+0

Возможно, я неправильно понимаю ваш вопрос, но не управляемые объекты, сохраненные при вызове '[context save: & error]' в вашей последней строке? Или вы хотите получить какое-то уведомление о событии сохранения, чтобы вы могли определить обработчик для него в другом месте? – Tim

+0

Что вы имеете в виду * метаинформация *? Как предложил Тим, объекты сохраняются в методе '[context save: error]'. –

+0

Я хотел более централизованное место, поэтому я мог бы скомпоновать весь код после сохранения. Прямо сейчас, он будет разбросан везде, где я создаю объект FileAttachments, а затем сохраняю контекст. prepareForDeletion - прекрасный пример. Я думаю, что нет никакого эквивалентного метода «readyToSave». –

ответ

0

Вы можете подклассифицировать свой NSManagedObjectContext и переопределить метод save :. Вы можете запустить свой «централизованный» код в этой точке, а затем вызвать save: суперкласса. Вызов метода супер-класса save: метод, когда он фактически сохраняется, как говорили другие.

0

NSManagedObjectContext генерирует ряд NSNotifications, которые могут быть тем, что вы ищете. Проверьте документацию для NSManagedObjectContextDidSaveNotification и NSManagedObjectContextObjectsDidChangeNotification.

Смежные вопросы