swift - 在 Swift 中编码/解码类的重要属性的方法

标签 swift encoding tuples decoding nscoding

原帖

我有一个类,我正在使用 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/

相关文章:

swift - 快速解码 base64 编码的应用引擎数据的问题

python - 如何: Twisted privmsg to accept non-ascii strings

.net - 是否有将元组转换为 ValueTuple 的简写方法?

scala - 如何将两个元组与兼容的类型结合起来?

ios - Swift 编译器错误 : "Expression too complex" on a string concatenation

JSON 请求并不总是返回相同的响应类型(对象和数组)

ios - iOS 10 设备中不显示推送通知

java - Core Java 如何将20字节字节数组转换为字符串

python 请求无法解码 utf-8 API 响应

python - 根据条件从现有 token 和元组创建新 token 和元组