我有一个 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”),但仍然失败。
如何解码原始类不可用的对象?