gpt4 book ai didi

cocoa - NSDocument 版本有奇怪的行为

转载 作者:行者123 更新时间:2023-12-03 16:32:47 24 4
gpt4 key购买 nike

文件的保存和打开效果非常好,但是当选择“恢复到保存”时,在窗口的右侧(以前的文档)一眨眼,我的文档版本就出现了,然后只是空白副本。如果我从这个废话中恢复,副本注释会被更改,但如果我保存并重新打开文档,它将恢复到以前的版本。我不知道这是怎么发生的。我已经检查了苹果官方文档和 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 Controller 中确实加载了我将字符串设置为 MyDocument,即 IBOutlet 到 NSTextview:

- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
[myDocument insertText:doucmentString];
[self updateChangeCount:NSChangeAutosaved];
}

更新:

我通过将 windowsControllerDidLoadNib 代码移至 awakeFromNib 解决了版本浏览器行为。所以现在我可以看到文档版本。唷!

仍然在点击恢复时,我的文档没有更新,只有在关闭并重新打开时才会显示。一定有一些我不知道的更新代码。所以还在寻找!

最佳答案

最后一切都在版本中运行:我正在使用这个方法:

- (BOOL)revertToContentsOfURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
if(absoluteURL != NULL) {
doucmentString = [[NSString alloc] initWithContentsOfURL:absoluteURL encoding:NSUTF8StringEncoding error:outError];
return YES;
} else if (outError) {
//do nothing
}
return NO;
}

并且还更改了我的 awakeFromNib 方法,而不是 insertText 我现在使用 insertTextreplacementRange

-(void) awakeFromNib
{
if (documentString != NULL) {
[myDocument insertText:doucmentString replacementRange:NSMakeRange(0, [[myDocument textStorage]length])];
[self updateChangeCount:NSChangeAutosaved];
}
}

关于cocoa - NSDocument 版本有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com