在Swift中保存结构

时间:2015-06-23 12:59:53

标签: swift serialization struct nscoding value-type

今年刚从WWDC观看了一些有关Swift价值类型的视频,

Building Better Apps With Value Types in Swift
Protocol-Oriented Programming in Swift

我发现自己完全准备好在我的应用中使用值类型。这意味着更少的类类型和更多的结构。但是如何保存这些数据呢?以前,使用Classes,我会采用NSCoding,但这要求我采用NSObject,这将要求我使用Class而不是Struct。

以下是我看到的选项:

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

据我所知,整个NSCoding业务旨在用于存储/检索对象树。因此需要将NSObject作为基类(可能在将来的某个时候,它可能会移到AnyObject,我猜)。

因此,来自这种树的每个类的责任是编码/解码(某些)其属性的值,包括结构。所有这些结构都将不可避免地保留在某个层面上作为对象的属性,对吗?

鉴于上述情况,我认为探索的方向是使用encodeFoo(foo: Foo, forKey key: String)decodeFooForKey(key: String) -> Foo等函数扩展NSCoder协议,其中Foo将是您的自定义结构之一,并且然后在实现NSCoding协议的类中使用这些函数,就像使用基本Obj-C类型的类似函数一样。