Этот декодер будет декодировать только те классы, которые принимают NSSecureCoding
Из AppDelegate я называю это:
-(void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply{
[SavedSearchesHack getAllMatches:^(MatchCollection * _Nonnull matchCollection) {
reply(@{@"response" : matchCollection});
}];
}
И тогда я получаю эту ошибку при вызове ответа:
*** Завершение работы приложения из-за необработанного исключения "NSInvalidUnarchiveOperationException", причина: "Этот декодер будет декодировать только те классы, которые принимают NSSecureCoding. Класс Test.MatchCollection не принимает его.
public class func openParentApplication(userInfo: [NSObject : AnyObject],
reply: (([NSObject : AnyObject], NSError?) -> Void)?) -> Bool
Пока я возвращаю просто объекты типа "test" вместо MatchCollection, я не получаю ошибок.
2 ответа
Добавить в .h
файл
// just the protocol
@interface PacketH: NSObject<NSSecureCoding>
добавить в .m
файл
+ (BOOL)supportsSecureCoding {
return YES;
}
Если вы используете
Swift
, вам нужно реализовать
NSSecureCoding
протокол к вашему классу:
class Foo: NSObject, NSSecureCoding {
static var supportsSecureCoding: Bool {
return true
}
}