【发布时间】:2014-06-09 22:12:50
【问题描述】:
我在 Swift 中找不到符合 NSSecureCoding 协议的正确方法,特别是在解码作为其他对象数组的对象时。
我无法在 swift 中创建类类型的 NSSet。
在 Objective-C 中我会使用
self.books = [aDecoder decodeObjectOfClasses:[NSSet setWithObjects:[NSArray class], [Book class], nil] forKey:@"books"];
在 Swift 中,我在创建 NSSet 时遇到问题,如下所示:
self.books = aDecoder.decodeObjectOfClasses(NSSet().setByAddingObject(NSArray.self).setByAddingObject(Book.self), forKey:"books")
这是错误:
Type 'NSArray.Type' does not conform to protocol 'AnyObject'
【问题讨论】:
-
NSSet(objects: [NSArray.self, Book.self])
-
找不到接受所提供参数的“init”的重载。在操场上尝试一下 class Book { } class Test { var set = NSSet(objects: [NSArray.self, Book.self]) }
-
@TimSawtell:它应该可以在最新版本中使用
-
@user102008 是的,它现在可以正常编译,但我得到一个运行时异常:由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“键“字符串”的值属于意外类“NSArray”。允许的类是 '{( ( NSArray, NSString ) )} Radar 提交给 Apple (id: 17617664) 。它仍然开放。