我希望能够使用可选值数组对类进行编码。 Xcode错误,“无法调用'编码对象',参数列表类型为'([SKSpriteNode?],密钥:字符串')。
class MyCustomNode: SKNode {
var possibleSprites:[SKSpriteNode?] = [nil, nil, nil, nil, nil, nil, nil]
...
}
override func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.possibleSprites, forKey: "POSSIBLESPRITES")
super.encodeWithCoder(aCoder)
}
这有可能实现吗?如果没有,还有什么其他选择?
正确解码的问题......
以下,
let x:[AnyObject!] = aDecoder.decodeObjectForKey("POSSIBLESPRITES") as! [AnyObject]
self.possibleSprites = x.map { $0 == NSNull() ? nil : $0 }
我收到Xcode错误:“无法使用类型为'((_) - > _)'的参数列表调用'map'”
我认为它与返回类型有关,但不确定如何解决...
答案 0 :(得分:1)
使用Objective-C,您也无法编码nil指针。您需要将self.possibleSprites
映射到AnyObject?
数组,并使用NSNull
代替nil。
let x : [AnyObject!] = self.possibleSprites.map { $0 == nil ? NSNull() : $0 }
aCoder.encodeObject(x, forKey: "POSSIBLESPRITES")
请记得在回来的路上正确解码。