如何知道重新打开时哪些文件崩溃了?

时间:2014-01-22 11:46:57

标签: objective-c macos

例如,用户在我的应用程序中打开10个文档 重新启动时,应用程序崩溃重新打开这10个文档中的一个。
在下次启动时,用户将收到一条消息:“上次打开”ApplicationName“时,它意外退出......”。

我需要处理崩溃的文档应用程序,并通知用户,例如,“document10无法重新打开...”,并重新打开9个文档。

请帮忙。我在Cocoa文档中没有找到任何关于此的内容。

对不起我的英语,这是我的第二语言。

2 个答案:

答案 0 :(得分:0)

打开文档时,只需将当前文档URL保存为用户默认值,例如LastAttemptedOpenURL,然后在文档打开后将其设置为null。然后在启动时检查此密钥,如果它不为null,则假定文档崩溃了应用程序。

答案 1 :(得分:0)

您可以完全控制读取NSDocument类中的数据的代码(例如方法-readFromURL:ofType:error:outError),因此您需要更多错误检查,并且可能需要处理异常处理这些方法:

- (BOOL)readFromURL:(NSURL *)absoluteURL
             ofType:(NSString *)typeName
              error:(NSError **)outError {

    @try {
        // Do read
    } @catch(NSException *ex) {

        if (outError) {
            NSMutableDictionary *errorDetail = [NSMutableDictionary dictionary];
            [errorDetail setValue:@"Something bad happened"
                           forKey:NSLocalizedDescriptionKey];
            *outError = [NSError errorWithDomain:@"MyErrorDomain"
                                            code:100
                                        userInfo:errorDetail];
        }
        return NO;
    }

    return YES;
}

如果您决定进行异步阅读,情况会更复杂,但仍有可能避免在潜在危险区域发生崩溃。