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