Сохранение и открытие файла работает отлично, но при выборе «Вернуть к сохранению» в правой части окна (предыдущие документы) на мгновение ока мои версии документа видны, а затем просто пустые копии.
И если я восстановлю из этого бла-копии, пометка поменяется, но если я сохраню и снова открою документ, он будет восстановлен до предыдущей версии. Я не уверен, как это происходит.
Я проверил официальный документ 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];
}
UPDATE:
Я решил поведение браузера версии, переместив код windowsControllerDidLoadNib
в awakeFromNib
. Так что теперь я могу видеть версии документа. Уф!
Тем не менее, когда нажимаете кнопку восстановления, мой документ не обновляется, только при закрытии и повторном открытии они отображаются. Должен быть какой-то код обновления, о котором я не знаю.
Так все еще смотрю!