2014-10-18 4 views
0

Это, вероятно, легко, но я не могу разобраться, возможно, уже поздно. У меня есть простая программа, которая берет текст из NSTextView и сохраняет его как rtf. Сохранение текста само по себе отлично работает, я просто не могу понять, как получить атрибуты для тегов.атрибуты не сохраняются с файлом

Код:

NSAttributedString *saveString = [[NSAttributedString alloc] 
            initWithString:[textView string]]; 

NSData *writeResults = [saveString 
          RTFFromRange:NSMakeRange:(0, [saveString length]) 
          doumentAttributes:?? ]; 

[writeResults writeToURL:[panel URL] atomically: YES]; 

Я знаю, что мне нужно NSDictionary для documentAttributes, так как я понимаю, что с точки зрения?

Что мне не хватает?

+0

Нет атрибутов, которые вы не задали в атрибутной строке (даже не уверены, что именно этот метод 'string' вы вызываете). – Droppy

ответ

0

Кажется, что вы запрашиваете textView для его свойства string. Вы должны спросить его за attributedString собственности:

NSAttributedString *saveString = textView.attributedString; 

Вы можете получить атрибуты из приписываемого строки следующим образом:

NSMutableDictionary *allAttributes = [[NSMutableDictionary alloc] init]; 
[saveString enumerateAttribuesInRange:NSMakeRange(0,saveString.length) options:NSAttributedStringEnumerationReverse usingBlock:^(NSDictionary *attrs, NSRange range, BOOL *stop) { 
    [allAttrubutes addEntriesFromDictionary:attrs]; 
}]; 
NSData *writeResults = [saveString.string RTFFromRange:NSMakeRange(0,saveString.length) documentAttributes:allAttributes]; 

Я использовал этот метод для получения атрибутов много раз, однако я никогда сохранен в RTF, поэтому я точно не знаю, как это получится. Однако все атрибуты будут в словаре.

+0

Спасибо, вот что мне нужно. Только изменение вашего кода для его работы относится к строке NSData. NSData * writeResults = [saveString RTFFromRange: NSMakeRange (0, saveString.length) documentAttributes: allAttributes]; – littleDrummerBoy

Смежные вопросы