用NSData&amp ;;加载iOS自定义文件格式NSCoding
我正在寻找一些iOS Cocoa程序员的一些指导,说明如何实现一种机制来加载和解析我将在内存中使用的模型对象中的自定义文件格式。我知道必须有很多方法来破解这个坚果,但让我分享一下我探索过的当前路径的基本概念,以及我陷入困境的地方。
但首先,这里是上下文:说我有一个我无法改变的现有文件格式。它基本上是一种奇特的管道分隔格式,分为不同的部分,每个部分都是这样的:
%n|sectionName
...并且后面的n行都以对该部分唯一的方式进行管道分隔。有些部分有一个以管道分隔的标题行,后面是n行数据(也是管道分隔的),而其他部分可能只有n个以管道分隔的行。在文件的开头有几个简短的部分,最后会有一个巨大的部分描述k-ary树的节点:它们的父子关系和与每个节点相关的任何数据。总而言之,这些文件的大小是几十兆字节,未来可能更大。
最后,最后一点上下文是我对iOS编程很新。
我开始使用NSFileHandle
获取文件的表示形式作为NSData
的实例。这很简单,在探索NSData
接口并尝试从那里开始之后,我注意到了NSCoding
协议,它声称是一个用于将对象归档和序列化为(和来自)表示的工具。
我认为这听起来像我可能需要的东西,因为我倾向于认为文件格式只是表示我的模型对象可以编组进去。然而,在深入研究“档案和序列化编程指南”之后,我开始猜测自己。 API似乎不适合我想要完成的任务。
我在这里走了一条死胡同吗?我是否应该寻求继承NSInputStream
,或者我应该采取其他一些我缺失的方法?
没有找到相关结果
已邀请:
4 个回复
森含械
来读取这些行。如果你真的想使用NSInputStream或NSFileHandle你当然可以,你只需要自己解析字符串中的每一行(这真的不是那么难)。
犯痪桂涛杭
可能比你的目的更麻烦。它希望被用作一种持久化和解码Obj-C对象的方法,其中编码/解码由对象的需求驱动(“好吧,现在给我一个int,现在很简短,现在关于一个Obj-C对象怎么样...... “)。
桑娠贯涤
,它用于解析文本文件。 我没有看到使用
的任何好处,因为它只返回原始字节。 编辑 在iOS设备AFAIK上无法使用其他语言进行此预处理。所以这个选项只能在mac上使用。
耐钨徒