2010-07-12 298 views
0

我有以下一段代碼(可能會多次調用,或者甚至在同一時間調用,因爲它響應某些NSURLConnection didFinishLoading方法)應該調用willSave方法針對上下文中註冊的每個對象。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方法的某些條件?

回答

0

問題是,只有在保存操作中沒有發生錯誤時,纔會調用didSave。否則,他們只是跳過。我明白這是爲didSave,但對於willSave它不應該是這樣。