use*_*878 12 objective-c nskeyedarchiver ios nskeyedunarchiver watchkit
我试图通过序列化数组将一系列'Employee'对象iPhone传递给Apple Watch:
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:employees];
Run Code Online (Sandbox Code Playgroud)
并在Watch侧进行反序列化:
NSMutableArray *employees = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
Run Code Online (Sandbox Code Playgroud)
这是'员工'类:
@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
Run Code Online (Sandbox Code Playgroud)
我是否必须在Watch端进行任何更改才能修复此错误?
ter*_*ina 36
所以我只是遇到了同样的问题,答案很简单,但有点难以自己找到.
你只需要使用:
NSKeyedArchiver.setClassName("Employee", for: Employee.self)NSKeyedUnarchiver.setClass(Employee.self, forClassName: "Employee")在需要的地方.
看起来iOS扩展名在类名前面加上扩展名.
Ste*_*n S 10
对我来说,这发生在我的Today扩展中。解决该问题的方法是在声明之前添加@objc(MyExampleClass)。
@objc(MyExampleClass)
open class MyExampleClass {
....
}
Run Code Online (Sandbox Code Playgroud)