arrays - 是否可以对可选的快速数组进行编码?

标签 arrays swift encode option-type

我希望能够使用可选值数组对类进行编码。 Xcode 错误“无法使用类型为‘([SKSpriteNode?], for key: String') 的参数列表调用‘encode object’。

 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’”

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

最佳答案

使用 Objective-C,你也不能编码一个 nil 指针。您需要将 self.possibleSprites 映射到 AnyObject? 数组,并使用 NSNull 代替 nil。

let x : [AnyObject!] = self.possibleSprites.map { $0 == nil ? NSNull() : $0 }
aCoder.encodeObject(x, forKey: "POSSIBLESPRITES")

请记住在返回途中正确解码。

关于arrays - 是否可以对可选的快速数组进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226259/

相关文章:

php - 检查一个数组是否只包含一个键/值

swift - 选项卡栏中所选图像的颜色在 iOS 7 中不会改变

php - 任何简单的字符串编码-解码或加密-解密类php?

Swift - 如何从 View 之外的函数访问@Published var?

java - 将 Base64 编码的图像写入文件

ios - 如何使枚举可编码?

c - 结构体数组的最后一个元素 - C

PHP/MySql 在数组中搜索一个值

c - 如何在函数内为数组分配内存

ios - 如何重新加载 UITableView 数据避免卡住