2012-07-31 42 views
2

我正在制作一个应用程序,让用户以不同的颜色和笔刷大小在屏幕上绘图。我将绘制的每条路径的信息存储在JSON文件中,以便将其保留在内存之外。现在我已经解析了所有现有的路径,然后添加新路径并将其全部写回。我希望它只是将新数据追加到JSON文件中,而不必先读入并解析它,这样一次只能有一条路径在内存中。SBJSON将新数据追加到现有的JSON文件中,而不先解析它

我正在使用SBJSON,JSONWriter有一些附加功能,但我认为你需要有JSON字符串将它追加到第一个,而不是文件,这意味着我将不得不在文件中读取。有没有办法做到这一点,而不读取文件呢?我确切知道数据的结构。

回答

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属性并将其插入SBJsonStreamParserAdapter,然后关闭。这也有一个好处,就是如果你的文件有很多路径,你可以在读完整个文件之前开始绘制。 (因为你得到每个路径的回调。)

你可以看到在use case here.

+0

测试不再工作:( – 2015-07-13 18:30:46

+0

该链接无效,因为项目结构发生了变化,实际上它更改为更好地支持此用例。[API文档](http://cocoadocs.org/docsets/SBJson/ 4.0.2/Classes/SBJson4Parser.html)更好地解释它。 – 2015-07-14 19:26:49

0

我很确定它不可能......我最终做的事情是以字符串的形式读取JSON文件,而不是浪费内存,将所有内容改变为字典和数组,我只是寻找部分的实例(例如:我想在字符串“],”texts“”之前插入一些东西),我想插入数据并将其插入并将其写回到文件中。

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

+0

一些信息,可能:-)我刚才已经回答显示如何。 – 2012-12-13 21:56:03

相关问题