我正在制作一个应用程序,允许用户以不同的颜色和画笔大小在屏幕上绘图。一旦绘制完每个绘制路径,我会将有关每个绘制路径的信息存储在 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/