我正在从一些 iOS Cocoa 程序员那里寻找一些指导,了解如何实现一种机制来将自定义文件格式加载和解析到我将在内存中使用的模型对象中。我知道一定有很多方法可以解决这个问题,但让我分享一下我目前探索的路径的基本想法,以及我陷入困境的地方。
但首先,这里是上下文:假设我有一个无法更改的现有文件格式。它基本上是一种奇特的管道分隔格式,分为不同的部分,每个部分的开头如下所示:
%n|sectionName
...并且随后的 n 行都以该部分独有的方式用竖线分隔。有些部分有一个以竖线分隔的标题行,后跟 n 行数据(也是以竖线分隔的),而其他部分可能只有 n 行以竖线分隔的行。文件开头有几个小部分,最后会有一个巨大的部分描述 k-ary 树的节点:它们的父子关系以及与每个节点关联的任何数据。总而言之,这些文件的大小为数十兆字节,将来可能会更大。
最后,最后一点背景是我对 iOS 编程相当陌生。
我首先使用NSFileHandle
将文件表示为NSData
. 这很容易,在探索NSData
接口并尝试从那里开始时,我注意到NSCoding
协议,它声称是一种将对象归档和序列化为(和从)表示的工具。
我认为这听起来像是我可能需要的东西,因为我倾向于认为文件格式只是我的模型对象可以编组到的表示形式。然而,在深入研究“档案和序列化编程指南”之后,我开始怀疑自己。API 似乎不适合我想要完成的工作。
我在这里走死胡同吗?我应该寻求子类NSInputStream
化,还是应该采取一些我错过的其他方法?