2

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

我正在使用 SBJSON,JSONWriter 有一些附加功能,但我认为您需要先将 JSON 字符串附加到文件,而不是文件,这意味着无论如何我都必须读取文件。有没有办法在根本不读取文件的情况下做到这一点?我确切地知道数据的结构。

4

2 回答 2

2

这是可能的,但你必须作弊一点。您可以为每个路径创建一个独立的 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属性并将其插入 a SBJsonStreamParserAdapter,然后就可以了。这还有一个好处是,如果您的文件中有很多很多路径,因为您可以在阅读完整个文件之前开始绘制。(因为您会为每个路径获得一个回调。)

您可以在此处查看有关用例的一些信息。

于 2012-12-13T21:55:12.050 回答
0

我很确定这是不可能的......我最终做的是在 JSON 文件中作为字符串读取,而不是浪费内存将所有内容更改为字典和数组,我只是寻找部分字符串的实例(例如:我想在字符串 "]、"texts"" 出现之前插入一些东西)我想插入数据并将其插入那里并将其写回文件。

据我所知,这是最好的解决方案。

于 2012-08-02T20:50:37.140 回答