NSKeyedArchiver и AttributedString

Я хотел бы знать, как сериализовать NSAttributedString, чтобы последовательно хранить его в управляемом объектном контексте основных данных. Однако я нашел этот ответ, но в ветке нет дальнейших объяснений. Может ли кто-нибудь объяснить (в двух словах), как вручную кодировать атрибутированную строку? Было бы весьма признателен!

Большое спасибо!

РЕДАКТИРОВАТЬ:

Вот что я делаю:

NSMutableData *renderCacheData = [[NSMutableData alloc] init];
    NSKeyedArchiver *renderCacheArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:renderCacheData];
    [renderCacheArchiver encodeObject:bSelf.attString forKey:@"aS"];

В последней строке он терпит неудачу, вывод выглядит следующим образом:

*** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[__NSCFType encodeWithCoder:]: нераспознанный селектор отправлен экземпляру 0x1c538a70»

Теперь, когда я понял другие вопросы здесь, это связано с тем, что объекты CT * не могут сериализоваться (мой атрибуты NSAttributedString dict содержит атрибуты CTFont и CTColorRef. Единственное, что я понятия не имею, как написать категории или (что маловероятно?) подкласса этих типов, чтобы они могли сериализоваться сами.


person LaK    schedule 14.04.2013    source источник
comment
Не могли бы вы показать пример NSAttributedString и что происходит, когда вы пытаетесь его заархивировать?   -  person matt    schedule 14.04.2013
comment
Посмотрите на вышеупомянутый ответ. В частности: класс NSAttributedString также совместим с NSCoding, но атрибуты - нет, вот в чем проблема.   -  person gaige    schedule 14.04.2013
comment
Да, но это именно то, чего я хочу добиться. Если вы посмотрите на ссылку, которую я предоставил в вопросе, в последнем комментарии к ответу говорится, что конкретный пользователь решил проблему, вручную написав код для сериализации массива атрибутов, это то, что мне нужно выполнить и тогда...   -  person LaK    schedule 15.04.2013
comment
@LaK Посмотрите на принятый ответ на дубликат, на который я ссылался. В нем есть ссылка на сообщение на форумах разработчиков Apple. В этом посте есть код, который делает то, что вы хотите.   -  person rmaddy    schedule 15.04.2013
comment
@maddy Большое спасибо! Я думаю, было бы полезно, если бы вы разместили это здесь в качестве ответа для людей, у которых есть тот же вопрос, поскольку это действительно решает проблему.   -  person LaK    schedule 15.04.2013