12

配列をシリアル化することにより、「従業員」オブジェクト iPhone の配列を Apple Watch に渡そうとしています。

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:employees];

ウォッチ側のようにシリアル化を解除します。

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 側で何らかの変更を行う必要がありますか?

4

3 に答える 3

39

まったく同じ問題が発生したばかりで、答えは簡単ですが、自分で見つけるのは少し難しいです。

あなたは単に使用する必要があります:

  • NSKeyedArchiver.setClassName("Employee", for: Employee.self)
    連載前
  • NSKeyedUnarchiver.setClass(Employee.self, forClassName: "Employee")
    デシリアライズ前

必要な場所。

iOS 拡張機能は、クラス名の前に拡張機能の名前を付けているようです。

于 2016-05-11T12:35:03.053 に答える