objective-c - SBJSON 将新数据附加到现有 JSON 文件中,而不先解析它

标签 objective-c ios json file-io sbjson

我正在制作一个应用程序,允许用户以不同的颜色和画笔大小在屏幕上绘图。一旦绘制完每个绘制路径,我会将有关每个绘制路径的信息存储在 JSON 文件中,以防止其占用内存。现在我让它解析所有现有路径,然后添加新路径并再次将其全部写回。我希望它只需将新数据附加到 JSON 文件中,而不必先读入并解析它,这样一次只有一个路径存在于内存中。

我正在使用 SBJSON,JSONWriter 有一些附加功能,但我认为您需要首先将 JSON 字符串附加到它,而不是文件,这意味着我无论如何都必须读入文件。有没有一种方法可以在不读取文件的情况下执行此操作?我确切地知道数据的结构。

最佳答案

这是可能的,但你必须作一点欺骗。您只需为每个路径创建一个独立的 JSON 文档,并将其附加到该文件中。所以你的文件中将会有这样的内容:

{"name":"path1", "from": [0,3], "to":[3, 9]}
{"name":"path2", "from": [0,3], "to":[3, 9]}
{"name":"path3", "from": [0,3], "to":[3, 9]}

请注意,这不是一个 JSON 文档,而是三个。不过,SBJsonStreamParser 很方便地支持一次性读取多个 JSON 文档。设置 supportMultipleDocuments 属性并将其插入 SBJsonStreamParserAdapter,然后就可以了。这还有一个好处,如果您的文件中有很多很多路径,您可以在读完整个文件之前开始绘制。 (因为您会收到每个路径的回调。)

您可以在 use case here. 上看到一些信息

关于objective-c - SBJSON 将新数据附加到现有 JSON 文件中,而不先解析它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11741506/

相关文章:

json - JSON 和 YAML 是否有相当于 DTD 或 XML 架构的工具?

java - 在 Java 中将 XML 与 JSON 相互转换(无需额外的 <e> 和 <o> 元素)

ios - 如何根据 iOS 中的文本长度更改 UILabel 宽度?

objective-c - 设置嵌套对象?

ios - 在不同线程上访问 NSManagedObject 的 objectID?

ios - 将 sectionNameKeyPath 与 NSFetchedResultsController 一起使用

javascript - 如何从 flickr API 获取正确的 JSON 对象

ios - 使用 NSUserDefaults 与 Today Extension(小部件)共享一组自定义对象

ios - 如何从具有多个数组的字典中获取特定键并将其存储到放置在 TableView 单元格中的字符串中

iphone - 确定第一个和最后一个 UITableViewCell