在UIManagedDocument中禁用自动保存

时间:2013-11-12 21:15:14

标签: ios core-data uimanageddocument

有没有办法禁用UIManagedDocument的自动保存?

我在控制器中显示NSManagedObjects,用户可以在控制器中添加和删除它们。但我只想在用户明确触发保存操作时保存这些更改。否则我想丢弃这些变化。

感谢您的帮助!

2 个答案:

答案 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]撤消用户所做的任何更改。