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

时间:2016-12-28 21:33:12

标签: ios swift caching swift3 persistence

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

[Obj1, Obj2, Obj3]

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

请注意,该应用程序使用计算量非常大的算法,其中这些对象起着核心作用。因此,我需要尽可能保持这些物体的光亮。因此,我不想让对象符合NSCoding,因为它对于对象的核心作用是不必要的

2 个答案:

答案 0 :(得分:2)

如果让你的类成为符合NSCoding的Objective-C类,证明实际上会产生重大的性能影响(我持怀疑态度),那么你可以创建第二个容器,它是NSCoding的子类。仅用于存储。将初始化程序添加到当前轻量级Swift类/结构中,从该容器对象初始化实例,反之亦然。无论何时需要序列化/反序列化,只需将此容器对象用作中间体。

这使您在阅读/写作时以最低成本购买功能,但不会影响常规使用性能。

答案 1 :(得分:0)

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