Могу ли я получить NSAttributedString в приложении iOS из архива, созданного в OS X?

У меня есть программа для Mac, которая хранит свои данные с помощью NSKeyedArchiver. Я использую тот же код в приложении iOS, чтобы попытаться прочитать данные из файла, но происходит сбой при попытке декодировать экземпляр NSAttributedString. Совместимы ли версии NSAttributedString для iOS и OS X, т.е. это ошибка в iOS?

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


person Iain Delaney    schedule 24.08.2011    source источник
comment
Вот журнал консоли без стека вызовов: 11-08-23 6:27:35.747 PM HorizonTouch: *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSMutableParagraphStyle)'   -  person Iain Delaney    schedule 24.08.2011


Ответы (2)


NSAttributedString может выглядеть одинаково как в iOS, так и в OS X, но некоторые его свойства не таковы.

Вы правы, см.: http://lists.apple.com/archives/cocoa-dev/2010/Aug/msg00479.html

NSFont против UIFont и т. д.

person Mark Fleming    schedule 06.03.2013

Поэтому я не уверен в этом ответе, не углубляясь в документацию, но хотя NSAttributedString может выглядеть одинаково как на iOS, так и на OS X, некоторые из его свойств не таковы. Например, NSString имеет дополнения, которые различаются как для iOS (UIStringDrawing.h), так и для Mac OS.

Это может быть связано с тем, что декодер на iOS обнаружил или ожидал, что данные будут в несуществующем архиве. Не могли бы вы вставить полученные журналы? Обычно, если архиватор с ключом обнаруживает ошибку, он регистрирует проблему на консоли.

person lxt    schedule 24.08.2011