Сохранение пользовательских атрибутов в NSAttributedString

Я должен добавить пользовательский атрибут к выделенному тексту в NSTextView. Таким образом, я могу сделать это путем получения приписанной строки для выбора, добавления пользовательского атрибута к нему и затем замены выбора моей новой приписанной строкой.

Так же теперь я получаю приписанную строку представления текста как NSData и пишу это в файл. Позже, когда я открываю тот файл и восстанавливаю его к текстовому представлению, моих пользовательских атрибутов не стало! После разработки всей схемы моего пользовательского атрибута я нахожу, что пользовательские атрибуты не сохраняются для Вас. Посмотрите на ВАЖНОЕ примечание здесь: http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/AttributedStrings/Tasks/RTFAndAttrStrings.html

Таким образом, я понятия не имею, как сохранить и восстановить мои документы с этим пользовательским атрибутом. Какая-либо справка?

10
задан regulus6633 13 April 2010 в 02:51
поделиться

1 ответ

Обычный способ сохранить NSAttributedString - использовать RTF, а данные RTF - это то, что -dataFromRange: documentAttributes: ошибка: метод NSAttributedString создает.

Однако формат RTF не поддерживает настраиваемые атрибуты. Вместо этого вы должны использовать протокол NSCoding для архивации строки с атрибутами, которая сохранит настраиваемые атрибуты:

//asssume attributedString is your NSAttributedString
//encode the string as NSData
NSData* stringData = [NSKeyedArchiver archivedDataWithRootObject:attributedString];
[stringData writeToFile:pathToFile atomically:YES];

//read the data back in and decode the string
NSData* newStringData = [NSData dataWithContentsOfFile:pathToFile];
NSAttributedString* newString = [NSKeyedUnarchiver unarchiveObjectWithData:newStringData];
16
ответ дан 3 December 2019 в 17:57
поделиться