我正在尝试将大量对象保存到文件中并检索它们以供以后使用。
以前,我使用these macros - 但感觉很乏味。
然后我发现Autocoding,它以自己的方式很棒,但它不能编码/解码实例变量。
我需要自动化整个编码/解码过程,因为我的应用程序仍处于开发阶段,为每个ivar编写编码/解码实现都很繁琐。
答案 0 :(得分:5)
您可以覆盖+ codable Properties方法并返回ivars的名称。它不如自动检测它们好,但比手动编写NSCoding逻辑更好。
答案 1 :(得分:1)
您可以从Objective-C运行时获取与类关联的ivars列表 - 请参阅class_copyIvarList函数。同样,您可以使用object_getIvar获取特定对象的ivar值,并将其设置为object_setIvar。这些似乎是您自动编码对象的ivars所需的主要工具。
您需要注意的一个地方是,您不希望同时保存属性的值和支持它的ivar的值。因此,您可能希望将ivars列表与属性列表进行比较,并且只对那些似乎没有相应属性的ivars进行编码/解码。
此外,并不总是希望使对象的状态的每个最后一位都持久,因此您应该考虑提供一种选择退出特定ivars的方法(最终可能与选择一样乏味)。同样,您可能需要确定甚至可以编码的ivars,例如通常的值类型和自己实现NSCoding的任何类型。