gpt4 book ai didi

ios - 核心数据与 NSFileManager

转载 作者:可可西里 更新时间:2023-11-01 03:57:17 25 4
gpt4 key购买 nike

问题:

我使用 NSFileManager 来使用我自己的缓存系统已有一段时间了。通常我收到的数据是 JSON,我只是将字典直接保存到缓存中(在文档文件夹中)。当我需要它回来时,我会去拿它。我还在根文件夹上实现了一个 NSDictionary,有时当我觉得它更好时,它带有给定资源路径的键/值。例如:

有关 Geneve 天气的资源 17/02/2013,因此我将有一个名为 GE_17_02_2013 的键和包含该信息的 NSDictionary 路径的值。

通常我不需要做任何复杂的查询。但是,不知何故,根据我一直在阅读的内容,当你有大量数据时,你应该坚持使用 Core Data。就我而言,我通常有很多数据,但我从未真正感觉到应用程序出现故障或性能受到影响。所以我的问题是:

  1. 在这种情况下,有时(天气问题只是一个 示例)我只需要删除所有数据(Twitter 提要,例如 示例)并用全新的数据流替换它,是 Core 数据值(value)?我认为删除所有数据并插入(填充)它比仅存储 NSDictionary 并替换旧数据更重。

  2. 有时它会涉及图像、文本文件等和 NSFileManager 做的很完美,那么 Core 有什么优势呢 数据在这种情况下带来了什么?

P.S: 我刚看到 this发布,提出此类问题的地方,数字证明哪个实际上更快。不过,我也想要一个经验性的答案。

最佳答案

Core Data 值得在您描述的每个场景中使用。事实上,如果应用程序存储的不仅仅是偏好设置,您或许应该使用 Core Data。以下是一些原因,其中,您会找到自己问题的答案:

  • 绝对比文件系统快,即使您删除所有内容并按照您的描述重新写入(因此您不会从缓存中获益太多)。这基本上是因为您可以合并您的操作并仅在需要时访问商店。所以如果你读,写,读,你只能保存一次,其余的都在内存中完成,不用说,非常快。
  • 所有内容都有版本控制,您可以轻松地从一个版本迁移到另一个版本(同时保留用户在设备上拥有的内容)
  • 80% 的模型操作都是免费的。比如,当某些事情发生变化时,您可以覆盖 willSave 托管对象方法并通知您的 Controller 。
  • 使用cascade 可以轻松删除非常复杂的对象结构
  • 虽然将图像保存在数据库中不是一个好主意,但您仍然可以将它们保存在文件系统中,并让核心数据在代表它们的托管对象被删除时自动删除它们
  • 非常灵活,实际上非常灵活,您可以通过编写自定义数据存储将您的项目从使用本地文件系统迁移到使用服务器,只需进行很少的修改。
  • 核心数据设计者主要为您创建模型对象。您不需要创建自己的模型类(如果使用文件系统则必须这样做)

关于ios - 核心数据与 NSFileManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com