【发布时间】:2013-05-24 02:09:20
【问题描述】:
我的实体类别中有一个简单的方法,该方法将自定义方法添加到我的子类 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,滑动删除,确认,它说“删除已按下”。从上下文中删除对象,保存它(但显然不在这里),然后说删除成功(所以没有错误),然后我点击主页按钮,它记录了最后一个“保存”行,确实如此最后保存到持久存储。那么为什么中间那个不省钱呢?
【问题讨论】:
-
@MikePollard 我正在使用相同的共享上下文。
-
你的模型怎么样?你有多少个愿望清单?愿望清单是否与其他实体相关联?如果是,您是否设置了级联规则?
标签: ios objective-c core-data nsmanagedobjectcontext save