有几十个模型,每个模型都有几十个属性,都可以使用NSCoder
协议保存到磁盘NSKeyed(Un)archiver
,为我的 iOS 应用程序创建和维护模型是很多工作。一个模型有十几个属性,我必须:
定义十几个属性(没关系,因为它们必须在某个地方定义)
填充该
initWithCoder:
方法,即十几行和两打次键入/复制粘贴属性名称(或常量键),3)一些适用于encodeWithCoder:
.
出错的风险(在打字、复制或更改(或不更改)之类的东西encodeObject:
时encodeInteger:
是巨大的。此外,这只是大量的手工工作,我不想这样做。毕竟,我们有计算机来做这件事我们。
首先,我研究了简化工作的方法。像这样的东西:
#define encodeObject(x) [encoder encodeObject:[self valueForKey:x] forKey:x]
#define decodeObject(x) [self setValue:[decoder decodeObjectForKey:x] forKey:x]
但这仍然是很多工作。这不能做任何简单的事情吗?我不喜欢在运行时使用自省或其他方法来执行此操作。
我正在考虑一些生成/操作模型文件并将它们添加到 Xcode 的 Python 脚本。这可能基于一些 JSON 描述文件。
让 Xcode 在预构建阶段自动运行它会很棒。这意味着我在一个地方定义了每个模型和每个属性一次,并且永远不必担心我忘记编码/解码的错误和属性。
那里有类似的东西吗?有没有将文件添加到 Xcode 项目的方法,而不会弄乱一些不可读的 Apple“XML”项目文件?那么在目标中包含标题怎么样。或者也许是其他一些很好的方法来节省我所有的工作?