原帖
我有一个类,我正在使用 NSCoding 进行编码和解码。我了解了如何对数字或字符串等基本类型进行编码,我什至链接了 NSCoding 兼容类。我还了解了如何对这些基本类型的数组进行编码。
我现在困惑的是对字符串、数组和对的组合进行编码。具体来说,我正在尝试对这样定义的属性进行编码
var configuration: [([String], String)]
此配置属性中的一些条目的示例可以如下所示:
configuration[0] = (["config1", "config2"], "2 configuration options")
configuration[1] = (["config1", "config2", "config3"], "3 configuration options")
所以我的困惑是如何将其编码为一对。我正在考虑将这对数组分成两个并行数组。然后我将它们编码为 [[String]]
(我想我知道该怎么做)和 [String]
。我只是用 2 个单独的字符串键对它们进行编码,例如 "configuration0"
和 "configuration1"
(对于 .0
和 . 1
该对的一部分)。然后我可以从这些字符串 key 中解码它们并将它们重新配对在一起。
有更好的方法来编码/解码吗?
编辑(回复 zaph 的答案):
我尝试使用普通的encodeObject对其进行编码。代码如下:
var configuration: [([String], String)] = Array<([String], String)>(count: 2, repeatedValue: ([],""))
var firstConfig: ([String], String) = (["config1", "config2"], "2 configuration options")
var secondConfig: ([String], String) = (["config1", "config2", "config3"], "3 configuration options")
configuration[0] = firstConfig
configuration[1] = secondConfig
coder.encodeObject(configuration, forKey: "configuration")
我得到的错误是:无法使用类型为“([([String], String)], forKey: String)”的参数列表调用“encodeObject”
最佳答案
如果包含的所有内容都是符合 NSCoding
的对象,则只需使用 encodeObject
进行配置
。
它configuration
是一个包含字符串数组的数组,字符串应该没有问题。
关于swift - 在 Swift 中编码/解码类的重要属性的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359455/