/ / Запазване на файл при използване на NSDocument - какао, nsdocument

Записване на файл при използване на NSDocument - какао, nsdocument

Създавам приложение с помощта на NSDocument. MyDocument.xib просто има NSTextView в NSScrollView. Когато правя ⌘S, за да го запазя, получавам съобщение за грешка („Документът„ Без име “не може да бъде запазен като„ Untitled.rubytext “.“). Как мога да накарам моето приложение да го запази като RTF файл? Искам да кажа, че използвам NSDocument (предполагам dataRepresentationOfType, но не съм сигурен?)

Благодаря предварително.

Отговори:

0 за отговор № 1

ябълка отговори това за вас много отдавна.


8 за отговор № 2

Бих искал да добавя, че примерното изпълнение на dataForType:error: в свързаната страница има някои или остаряла или напълно неточна информация. Ето доклада, който изпратих на Apple:

Примерът за изпълнение на dataOfType:error: гласи:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
[textView breakUndoCoalescing];
NSData *data = [textView dataFromRange:NSMakeRange(0, [[textView textStorage] length])
documentAttributes:nil
error:outError];
if (!data && outError) {
*outError = [NSError errorWithDomain:NSCocoaErrorDomain
code:NSFileWriteUnknownError userInfo:nil];
}
return data;
}

Има няколко проблема с това. На първо място, NSTextView не разполага с dataFromRange:documentAttributes:error: метод. Това трябва да бъде [text dataFromRange…] предвид предполагаемата структура на данните, посочени в документа.

Второ, според документацията за NSAttributedString, dataFromRange:documentAttributes:error: "изисква документ атрибут речник речник, указващ най-малко NSDocumentTypeDocumentAttribute за определяне на формата за писане."

Така че примерното изпълнение трябва да се чете поне

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
[textView breakUndoCoalescing];
NSData *data = [text dataFromRange:NSMakeRange(0, [[textView textStorage] length])
documentAttributes:[NSDictionary dictionaryWithObjectsAndKeys:NSPlainTextDocumentType, NSDocumentTypeDocumentAttribute, nil]
error:outError];
if (!data && outError) {
*outError = [NSError errorWithDomain:NSCocoaErrorDomain
code:NSFileWriteUnknownError userInfo:nil];
}
return data;
}

или някои други подходящи стойности на речника за RTF или други типове текстови стойности.

Макар че изглежда, че ОП може да не е видялтози документ в момента на публикуване, просто свързването с документа не помага толкова, колкото може да се мисли, тъй като документацията е счупена. Открих това след доста време удари собствената ми глава срещу същата грешка като OP, въпреки че аз копира дословно изпълнението на Apple.

Надявам се, че това помага на някой друг.