相关疑难解决方法(0)

无法解码类的对象


我正在尝试向我的Watchkit扩展发送"类",但是我收到此错误.

*由于未捕获的异常'NSInvalidUnarchiveOperationException'终止应用程序,原因:'* - [NSKeyedUnarchiver decodeObjectForKey:]:无法解码类的对象(MyApp.Person)

存档和取消存档在iOS应用程序上运行良好,但在与watchkit扩展程序通信时无效.怎么了?

InterfaceController.swift

    let userInfo = ["method":"getData"]

    WKInterfaceController.openParentApplication(userInfo,
        reply: { (userInfo:[NSObject : AnyObject]!, error: NSError!) -> Void in

            println(userInfo["data"]) // prints <62706c69 7374303...

            if let data = userInfo["data"] as? NSData {
                if let person = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? Person {
                    println(person.name)
                }
            }

    })
Run Code Online (Sandbox Code Playgroud)

AppDelegate.swift

func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!,
    reply: (([NSObject : AnyObject]!) -> Void)!) {

        var bob = Person()
        bob.name = "Bob"
        bob.age = 25

        reply(["data" : NSKeyedArchiver.archivedDataWithRootObject(bob)])
        return
}
Run Code Online (Sandbox Code Playgroud)

Person.swift

class …
Run Code Online (Sandbox Code Playgroud)

ios swift watchkit

26
推荐指数
4
解决办法
1万
查看次数

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

我试图通过序列化数组将一系列'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端进行任何更改才能修复此错误?

objective-c nskeyedarchiver ios nskeyedunarchiver watchkit

12
推荐指数
2
解决办法
5124
查看次数