gas*_*uff 14 json core-data bigdata ipad ios
我正试图在iPad上解析一个非常大的json-File.文件大小将在50到100 MB之间变化(有一个初始文件,每月将有一个新的完整数据集,将被下载,解析并保存到coredata中)
我正在为一家公司构建这个应用程序作为企业解决方案 - json文件包含敏感的customerdata,它需要在ipad本地保存,以便它甚至可以脱机工作.当文件低于20mb时它工作,但现在数据集变得更大,我真的需要解析它.我在解析过程中收到内存警告,在第三次警告后它就崩溃了.我有几个不同的核心数据实体,我只是设置来自json文件的所有值(当应用程序第一次启动时),一切都完成后,我正在做[context save].
我希望有人能就如何处理如此庞大的文件给我一些建议.我正在考虑将json文件拆分为几个较小的json文件,并且可能在多个线程中解析它们,但我不知道这是否是正确的方法.我想一个大问题是整个文件都被保存在内存中 - 也许有某种方法可以将它"流式化"到内存中或类似的东西?
我正在使用JSONKit(https://github.com/johnezang/JSONKit)来解析文件,因为我已经读过它是最快的一个(可能有一个较慢的一个在内存上更容易?).
提前致谢.
Dav*_*d H 20
1)将数据写入文件,然后使用NSData的dataWithContentsOfFile:options:error:并指定NSDataReadingMappedAlways和NSDataReadingUncached标志.这将告诉系统使用mmap()来减少内存占用,而不是用内存块加载文件系统缓存(这会使速度变慢,但对iOS的负担要小得多).
2)您可以使用YAJL SAX样式的JSON解析器在解码时获取对象.
注意:我没有做过2)但是已经使用了1)中体现的技术.
3)我自己最终需要这样的东西,写了SAX-JSON-Parser-ForStreamingData,可以绑定到任何异步下载器(包括我自己的).
| 归档时间: |
|
| 查看次数: |
7818 次 |
| 最近记录: |