在 iPhone 上存储 json 数据:按原样保存 json 字符串 VS 从 json 创建一个对象并使用 NSCoding NSKeyedArchiver | 珊瑚贝

Storing json data on the iPhone: save the json string as it is VS make an object from json and use NSCoding + NSKeyedArchiver


在我的 iPhone 应用程序中,我从远程服务器获取 json 数据,使用 Json 框架对其进行解析并将其呈现在 UIview 中。还希望能够为用户提供将数据存储在设备上的选项,以便也可以离线查看。我想知道直接存储 json 数据是否比创建对象然后使用 NSCoding NSKeyedArchiver 保存更好或更差的选择。我假设按原样存储 json 字符串的优点是它在磁盘上占用的空间比存档对象少,而另一方面,通过存储存档对象,您不必每次都解析存储的数据因此使用更少的内存。

有没有最佳的整体选择?有没有关于这个问题的最佳实践? json 文件大小约为 8KB。


我使用不同的方法。在我的应用程序中解析 JSON 数据后,它就会存储在 NSDictionary 中。我将其保留为 .plist 文件。

1
[myDictionary writeToFile:[self saveFilePath] atomically:YES];

加载:

1
NSMutableDictionary *wholeDictionary = [NSDictionary dictionaryWithContentsOfFile:[self saveFilePath]];

就是这样!

  • 这似乎是一种简单而有效的方法。谢谢!它使用的磁盘空间是否比归档对象少?
  • @Kremk:它可能使用相同或更多的空间。 plist 格式不是特别节省空间,因为它是一种人类可读的 XML 格式。密钥存档可能会以二进制格式存储一些东西(说”可能”,因为我没有检查过),这将为您节省一些空间。
  • 我同意@JeremyP,但鉴于它们是 8Kb 文件,不值得付出更多努力。
  • @Hiltmon我可以存储嵌套对象吗?即具有多个对象的数组


来源:https://www.codenong.com/4934389/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9834.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?