Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse and watchkit extension

I am building an app using WatchKit and would like to populate a Table with data from PFObjects I have in a class but I got this error:

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'This decoder will only decode classes that adopt NSSecureCoding. Class 'PFObject' does not adopt it.'

Having the same problem as this post

like image 810
user1872384 Avatar asked May 21 '15 07:05

user1872384


2 Answers

Have you considered adding a Swift extension to PFObject that adopts the NSSecureCoding protocol?

I haven't tried this action but it seems reasonable to expect this to work given the error message.

Recommended Action

In order to conform to NSSecureCoding:

An object that does not override initWithCoder: can conform to NSSecureCoding without any changes (assuming that it is a subclass of another class that conforms).

An object that does override initWithCoder: must decode any enclosed objects using the decodeObjectOfClass:forKey: method. For example:

SWIFT

let obj = decoder.decodeObjectOfClass(MyClass.self, forKey: "myKey")

In addition, the class must override its supportsSecureCoding method to return true.

If using Objective-C then a category seems like a suitable solution.

like image 96
Tommie C. Avatar answered Oct 14 '22 00:10

Tommie C.


In the watch's interface controller simply set call Parse's credentials again:

[Parse setApplicationId:@"APPID" clientKey:@"CLIENTKEY"];

and create a new PFQuery just for the watch. It doesn't matter if communication fails or not.

like image 29
Ramsy de Vos Avatar answered Oct 14 '22 01:10

Ramsy de Vos