编码swift数组的可选项是否可行?

时间:2015-07-05 00:38:31

标签: arrays swift encode optional

我希望能够使用可选值数组对类进行编码。 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'”

我认为它与返回类型有关,但不确定如何解决...

1 个答案:

答案 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")

请记得在回来的路上正确解码。