В некоторых операциях сохранения в Core Data не будет вызвано willSave - PullRequest
0 голосов
/ 12 июля 2010

У меня есть следующий фрагмент кода (который может быть вызван несколько раз или даже одновременно, потому что он является ответом на какой-то метод NSURLConnection didFinishLoading), который должен вызывать метод willSave для каждого объекта, зарегистрированного в контексте.*

NSLog(@"Before save.");
NSLog(@"Object count: %d", [[managedObjectContext registeredObjects] count]);
[managedObjectContext save:nil];
NSLog(@"After save.");

Проблема в том, что методы willSave (и didSave) вызываются только один раз в последней операции сохранения.Я действительно не знаю, что здесь происходит, так как я не использую потоки или что-то подобное.

Каждый объект в контексте является подклассом моего собственного класса MSRemoteObject, который имеет следующую реализацию willSave:

- (void)willSave {
    [super willSave];

    NSLog(@"Will save.");
}

Это пример созданного журнала, когда я запускаю приложение:

2010-07-12 12:07:45.638 Manistone[9902:207] Before save.
2010-07-12 12:07:45.638 Manistone[9902:207] Object count: 1
2010-07-12 12:07:45.643 Manistone[9902:207] Will save.
2010-07-12 12:07:45.650 Manistone[9902:207] Did save.
2010-07-12 12:07:45.651 Manistone[9902:207] After save.
2010-07-12 12:07:46.141 Manistone[9902:207] Before save.
2010-07-12 12:07:46.141 Manistone[9902:207] Object count: 11
2010-07-12 12:07:46.142 Manistone[9902:207] After save.
2010-07-12 12:07:50.574 Manistone[9902:207] Before save.
2010-07-12 12:07:50.574 Manistone[9902:207] Object count: 16
2010-07-12 12:07:50.575 Manistone[9902:207] After save.
2010-07-12 12:07:51.136 Manistone[9902:207] Before save.
2010-07-12 12:07:51.136 Manistone[9902:207] Object count: 18
2010-07-12 12:07:51.136 Manistone[9902:207] After save.
2010-07-12 12:07:51.137 Manistone[9902:207] Before save.
2010-07-12 12:07:51.137 Manistone[9902:207] Object count: 18
2010-07-12 12:07:51.138 Manistone[9902:207] After save.
2010-07-12 12:07:51.144 Manistone[9902:207] Before save.
2010-07-12 12:07:51.144 Manistone[9902:207] Object count: 18
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.145 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.146 Manistone[9902:207] Will save.
2010-07-12 12:07:51.147 Manistone[9902:207] Will save.
2010-07-12 12:07:51.158 Manistone[9902:207] After save.

Я действительно хочу запускать метод willSave при каждой операции сохранения.Есть ли способ заставить это?Или есть какие-то условия, при которых метод willSave не вызывается, о которых я не знаю?

1 Ответ

0 голосов
/ 16 июля 2010

Проблема в том, что willSave и didSave вызываются только тогда, когда в операции сохранения не происходит ошибок.В противном случае они просто пропущены.Я понимаю это для didSave, но для willSave этого не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...