У меня есть приложение iOS 7, которое сохраняет пользовательский объект в папку приложения iCloud Docs в виде файла. Для этого я использую протокол NSCoding.
@interface Person : NSObject <NSCoding>
@property (copy, nonatomic) NSString *name
@property (copy, nonatomic) NSString *lastName
@end
Сериализация объектов отлично работает в версии приложения iOS 7:
-
initWithCoder
иencodeWithCoder
-
[NSKeyedArchiver archivedDataWithRootObject:person]
-
person = NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)theData]
Но мне нужно переместить это приложение в iOS 8, и этот класс будет закодирован в быстрой и "переименован" для этой новой версии приложения iOS 8.
class PersonOldVersion: NSObject, NSCoding {
var name = ""
var lastName = ""
}
Когда я пытаюсь разархивировать объект, я получил следующую ошибку:
*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (Person)'
Я уже пробовал переименовать swift класс PersonOldVersion в исходное имя класса ("Person"), но все еще не удается.
Как я могу декодировать объект, оригинальный класс которого недоступен?