我有一个iOS 7应用程序,可以将自定义对象作为文件保存到应用的iCloud文档文件夹中。为此,我使用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,并且这个类将会被编写成Swift语言,并为这个新版本的应用进行'重命名(renamed)’。
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'),但仍然失败。
如果原始类名不可用,我该如何解码对象?