我无法找到NSSecureCoding在Swift中符合协议的正确方法,特别是在解码作为其他对象数组的对象时.
我无法NSSet在swift中创建类类型.
在Objective-C中我会使用
self.books = [aDecoder decodeObjectOfClasses:[NSSet setWithObjects:[NSArray class], [Book class], nil] forKey:@"books"];
Run Code Online (Sandbox Code Playgroud)
在Swift我遇到了NSSet这样的问题:
self.books = aDecoder.decodeObjectOfClasses(NSSet().setByAddingObject(NSArray.self).setByAddingObject(Book.self), forKey:"books")
Run Code Online (Sandbox Code Playgroud)
这是错误:
Type 'NSArray.Type' does not conform to protocol 'AnyObject'
Run Code Online (Sandbox Code Playgroud)
对于简单的对象:
self.myObject = aDecoder.decodeObjectOfClass(MyObject.self, forKey: "myObject")!
Run Code Online (Sandbox Code Playgroud)
自 Swift 3.0 起:
self.myObject = aDecoder.decodeObject(of:MyObject.self, forKey: "myObject")!
Run Code Online (Sandbox Code Playgroud)
雨燕4
aDecoder.decodeObject(of: [NSArray.self, Book.self], forKey: "books") as? [Book]
Run Code Online (Sandbox Code Playgroud)
对于嵌套对象:
NSSet(objects: [NSArray.self, Book.self])
Run Code Online (Sandbox Code Playgroud)
迅速
func decodeObjectOfClasses(_ classes: NSSet,
forKey key: String) -> AnyObject?
Run Code Online (Sandbox Code Playgroud)
自 Swift 3.0 起:
func decodeObject<DecodedObjectType where DecodedObjectType : NSCoding, DecodedObjectType : NSObject>(of cls: DecodedObjectType.Type, forKey key: String) -> DecodedObjectType?
Run Code Online (Sandbox Code Playgroud)
目标C
- (id)decodeObjectOfClasses:(NSSet *)classes
forKey:(NSString *)key
let books: AnyObject? = aDecoder.decodeObjectOfClasses(NSSet().setByAddingObject(NSArray.self).setByAddingObject(Book.self), forKey:"books")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2043 次 |
| 最近记录: |