有没有办法禁用UIManagedDocument
的自动保存?
我在控制器中显示NSManagedObjects
,用户可以在控制器中添加和删除它们。但我只想在用户明确触发保存操作时保存这些更改。否则我想丢弃这些变化。
感谢您的帮助!
答案 0 :(得分:2)
无法覆盖UIManagedDocument
子类
- (void)autosaveWithCompletionHandler:(void (^)(BOOL success))completionHandler
编辑:您可能希望包含一些其他方法。我使用第一个来确认是否以及何时发生自动保存,第二个用于调试某些错误,其中的细节无法通过任何其他方式获得。这就是我的子类中的所有内容,因此添加此内容非常简单。
@implementation YourManagedDocument
- (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError
{
NSLog(@"Auto-Saving Document");
return [super contentsForType:typeName error:outError];
}
- (void)handleError:(NSError *)error userInteractionPermitted:(BOOL)userInteractionPermitted
{
NSLog(@" error: %@", error.localizedDescription);
NSArray* errors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(errors != nil && errors.count > 0) {
for (NSError *error in errors) {
NSLog(@" Error: %@", error.userInfo);
}
} else {
NSLog(@" error.userInfo = %@", error.userInfo);
}
}
@end
答案 1 :(得分:0)
有关详细信息,请参阅this SO answer,但除非您明确保存NSManagedObjectContext
,否则可以致电[managedObjectContext rollback]
撤消用户所做的任何更改。