Сохранение и открытие файла отлично работает, но при выборе «Восстановить, чтобы сохранить», в правой части окна (предыдущие документы) на мгновение мои версии документа видны только пустые копии. И если я вернусь из этого списка заметок blah, будет изменен, но если я сохраню и снова открою документ, он будет восстановлен до предыдущей версии. Я не уверен, как это происходит. Я проверил официальный документ Apple и видео WWDC, но я не близок к решению этого вопроса. Пожалуйста, помогите?Версии NSDocument имеют странное поведение
В моем 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
. Теперь я вижу версии документа. Уф!
По-прежнему при удалении восстановления мой документ не обновляется, только при закрытии и повторном открытии они отображаются. Должен быть некоторый код обновления, о котором я не знаю. Так что все еще смотри!
Nickkk, спасибо. Я попробовал данные read: * (BOOD) readFromData: (NSData *) типа Type: (NSString *) typeName: (NSError **) outError', но до сих пор не решен. Но из вашей ссылки (спасибо :), он использовал File Wrapper, может быть, Apple связывает все эти версии в оболочке, поэтому использовать их можно только для их использования. Я попробую это через несколько часов и дам вам знать. – Raj
и Nickkk, я еще не могу вас проголосовать, моя репутация не является 15. Извините! – Raj