从我的iPhone应用程序中,我通过以下方式将数据发送到我的Watch应用程序:
func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) -> Void)!) {
if let data = NSKeyedArchiver.archivedDataWithRootObject(Country()) {
reply(["data": data])
}
}
在我的Watch应用程序中,我正在尝试读取数据:
WKInterfaceController.openParentApplication(input, reply: { (replyValues, error) -> Void in
if error == nil {
if let data = replyValues["data"] as? NSData {
if let temp = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? Country {
println("done")
}
}
}
})
抛出以下错误:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (Country)'
答案 0 :(得分:1)
NSKeyedArchiver / NSKeyedUnarchiver仅适用于符合NSCoding的类。
没有进一步检查,看来你的国家' class不符合NSCoding协议。
NSHipster有一个很棒的页面,可以解释如何实现NSCoding并使你的对象存档友好。而不是让你误解长篇大论的解释。
我强烈推荐它。