无法解码Employee类的对象(NS.object.0); 该类可以在源代码或未链接的库中定义

我试图通过序列化数组传递一个“员工”对象iPhone数组到苹果手表:

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:employees]; 

并将其反序列化为Watch:

 NSMutableArray *employees = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject]; 

这是'员工'级别:

 @interface Employee : NSManagedObject @property (nonatomic, retain) NSNumber * employeeID; @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) NSNumber * age; @property (nonatomic, retain) NSString * address; @property (nonatomic, retain) NSString * designation; @property (nonatomic, retain) NSString * teamName; @property (nonatomic, retain) NSString * gender; @property (nonatomic, retain) NSNumber * dateOfJoining; @end 

我是否需要在Watch端做任何修改来解决这个错误?

所以我只是有同样的问题,答案很简单,但是很难自己find。

你只需要使用:

  • NSKeyedArchiver.setClassName("Employee", forClass: Employee.self)
    在序列化之前
  • NSKeyedUnarchiver.setClass(Employee.self, for: "Employee")
    在反序列化之前

在需要的地方。

看起来iOS扩展在类名的后面加上扩展名。