gpt4 book ai didi

objective-c - 使用 NSData 和 NSCoding 加载 iOS 自定义文件格式

转载 作者:行者123 更新时间:2023-12-01 17:35:08 25 4
gpt4 key购买 nike

我正在从一些 iOS Cocoa 程序员那里寻找一些指导,以了解如何实现一种机制来将自定义文件格式加载和解析到我将在内存中使用的模型对象中。我知道一定有很多方法可以解决这个问题,但让我分享一下我目前探索的路径的基本想法,以及我陷入困境的地方。

但首先,这里是上下文:假设我有一个无法更改的现有文件格式。它基本上是一种奇特的管道分隔格式,分为不同的部分,每个部分的开头如下所示:

%n|sectionName

...并且随后的 n 行都以该部分独有的方式用竖线分隔。有些部分有一个以竖线分隔的标题行,后跟 n 行数据(也是以竖线分隔的),而其他部分可能只有 n 行以竖线分隔的行。文件开头有几个小部分,最后会有一个巨大的部分描述 k-ary 树的节点:它们的父子关系以及与每个节点关联的任何数据。总而言之,这些文件的大小为数十兆字节,将来可能会更大。

最后,最后一点背景是我对 iOS 编程相当陌生。

我开始使用 NSFileHandle将文件表示为 NSData 的实例.这很简单,在探索 NSData界面并尝试如何从那里继续,我注意到 NSCoding协议(protocol),它声称是一种将对象归档和序列化为(和从)表示的工具。

我认为这听起来像是我可能需要的东西,因为我倾向于认为文件格式只是我的模型对象可以编码到的表示形式。然而,在深入研究“文件和序列化编程指南”之后,我开始怀疑自己。 API 似乎不适合我想要完成的工作。

我在这里走死胡同吗?我应该寻求子类 NSInputStream相反,还是我应该采取一些我错过的其他方法?

最佳答案

NSCoding 可能是错误的方法。它设计用于序列化和反序列化 Objective-C 类型,而不是解析自定义文件格式。

也可能不需要子类 NSInputStream 。您最好的选择可能是使用 C 的 stdio 库,特别是 fgets阅读线条。如果你真的想使用 NSInputStream 或 NSFileHandle 你当然可以,你只需要自己从字符串中解析出每一行(这真的不是那么难)。

关于objective-c - 使用 NSData 和 NSCoding 加载 iOS 自定义文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com