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