我的实体类别中有一个简单的方法,可以将自定义方法添加到我的子NSManagedObject
类中(由于自动生成子类,我没有触及)。
我有这个方法可以从 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,滑动删除,确认,它说'删除按下'。从上下文中删除对象,保存它(但显然不是在这里),然后说删除成功(所以没有错误),然后我点击主页按钮,它记录了最后一个“保存”行,它最终保存到持久存储中。那么为什么中间的人不储蓄呢?