【发布时间】:2012-03-04 05:49:09
【问题描述】:
保存和打开文件工作完美,但是在选择“恢复到保存”时,在Windows(上一个文档)的右侧时,我的文档版本的眨眼就会看到,然后只是空白副本。 如果我从这个 blah 副本中恢复,注释会发生变化,但如果我保存并重新打开文档,它会恢复到以前的版本。我不确定它是如何发生的。 我已经查看了 Apple 官方文档和 WWDC 视频,但我还没有解决这个问题。 请帮忙?
在我的 NSDocument 子类中,我实现了以下方法:
+ (BOOL)autosavesInPlace { return YES; }
+ (BOOL)preservesVersions { return YES; }
并且从文件中读取完成:
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
if ([typeName compare:@"public.plain-text"] == NSOrderedSame) {
doucmentString = [[NSString alloc] initWithContentsOfURL:absoluteURL encoding:NSUTF8StringEncoding error:outError];
return YES;
}
if ( outError != NULL ) {
*outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
}
return NO;
}
在 Windows 控制器中确实加载了我将字符串设置为 MyDocument,即 IBOutlet 到 NSTextview:
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
[myDocument insertText:doucmentString];
[self updateChangeCount:NSChangeAutosaved];
}
更新:
我已经通过将windowsControllerDidLoadNib 代码移动到awakeFromNib 来解决版本浏览器行为。所以现在我可以看到文档版本。呸!
仍然在点击恢复时,我的文档没有得到更新,只有在关闭和重新打开它们时才会显示。一定有一些我不知道的更新代码。 所以还在寻找!
【问题讨论】:
标签: cocoa save nsdocument versions revert