在 Swift3 中缓存自定义对象数组

Cache Array of Custom Objects in Swift3

我需要为用户在会话之间保留一组自定义对象。该数组将填充 1-14 个相当简单和轻量级的自定义 swift 对象,如下所示:

[Obj1, Obj2, Obj3]

我想做的是在调用 viewWillDisappear 时保留此数据,以便当用户返回屏幕时,我可以再次使用这些确切的对象。做这个的最好方式是什么?我研究过使用核心数据,但我不想为这些对象设置数据模型,只是按原样存储它们,没有任何关系或任何东西。

请注意,该应用程序使用了一种计算量很大的算法,其中这些对象起着核心作用。因此,我需要让这些物体尽可能轻。因此,我不想让对象符合 NSCoding 因为它不是对象的中心角色所必需的

如果你可以使对象成为 NSObject 的子类,那么你可以让它符合 NSCoding 并使用 NSKeyedArchiver 和 NSKeyedUnarchiver 来序列化和反序列化你的对象。

如果使您的 class 成为符合 NSCoding 的 Objective-C class 证明实际上具有显着的性能影响(我持怀疑态度),那么您可以制作第二个容器,subclasses NSCoding 仅用于存储。向您当前的轻量级 Swift class/struct 添加一个初始化程序,从该容器对象初始化实例,反之亦然。任何时候你需要serialize/deserialize,你只需使用这个容器对象作为中间体。

这可以在 reading/writing 时以最低成本为您购买功能,但不会影响常规使用性能。