我在我的實體類中有一個簡單的方法,它將自定義方法添加到我的子類NSManagedObject
類(由於自動生成子類,我不會觸摸它)。爲什麼Core Data需要很長時間來保存對象?
我有這種方法,從MOC中刪除一個對象並保存上下文。
+ (void)deleteWishlist:(Wishlist *)wishlist
inManagedObjectContext:(NSManagedObjectContext *)context
{
[context deleteObject:wishlist];
NSError *error;
if(![context save:&error]) {
NSLog(@"%@", error);
} else {
NSLog(@"Delete successful");
}
}
我調用這個從我的視圖控制器之一,因爲這樣:
- (void)deleteWishlist:(Wishlist *)wishlist
{
if(wishlist) {
[Wishlist deleteWishlist:wishlist inManagedObjectContext:self.managedObjectContext];
}
}
它從一個UI事件處理方法(委託tableView: commitEditingStyle: forRowAtIndexPath:
方法)調用。
現在,這一切工作,但它需要很長時間來保存對象...我不知道這是否是默認行爲,但我希望它可以將立即刪除後永久存儲圖表。我不介意是否必須等到保存。
在iOS模擬器上,如果我點擊「停止」,然後再次加載我的應用程序,那麼願望清單仍然存在。如果我點擊主頁按鈕,應用程序會進入後臺模式,並且它會被保存......但它似乎將其保存了兩次。老實說,我不知道第一次做什麼。
2013-05-29 00:45:14.819 App[29024:c07] [WishlistCDTVC setFetchedResultsController:] set
2013-05-29 00:45:14.820 App[29024:c07] [WishlistCDTVC performFetch] fetching all Wishlist (i.e., no predicate)
2013-05-29 00:45:15.755 App[29024:c07] Delete pressed
2013-05-29 00:45:16.666 App[29024:c07] NSManagedObjects did change.
2013-05-29 00:45:16.669 App[29024:c07] NSManagedContext did save.
2013-05-29 00:45:16.670 App[29024:c07] Delete successful
2013-05-29 00:45:19.119 App[29024:c07] NSManagedContext did save.
我做了什麼:加載願望清單VC,刷卡刪除,確認,它說'刪除按下'。從上下文中刪除對象,保存它(,但顯然不在這裏),然後說刪除成功(所以沒有錯誤),然後我點擊主頁按鈕,它記錄最後一個'保存'行,最後保存到永久存儲。那麼爲什麼中間的人不能節約?
不同的背景? –
@MikePollard我正在使用相同的共享上下文。 – swiftcode
你的模型呢?你有幾個whishlists?願望清單是否與其他實體相關聯?如果是,您是否設置了級聯規則? –