Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 删除未使用的持久数据而不引用_Ios_Core Data_Persistent Storage - Fatal编程技术网

Ios 删除未使用的持久数据而不引用

Ios 删除未使用的持久数据而不引用,ios,core-data,persistent-storage,Ios,Core Data,Persistent Storage,我有一个与服务器通信的应用程序。在这个应用程序中,我有一个tableview,其中显示了我公司的几个人(他们的名字和姓氏以及他们的个人资料图像) 每当tableview打开或需要刷新时,我都会从服务器获取用户列表。这些用户都有一个image_名称,我试图在应用程序本身的数组中查找它。如果我在那里找不到它,我从documents目录加载它,如果我在那里找不到它,我也可以从我的服务器下载它,并在本地保存在设备上,以防止将来的下载 这非常有效,而且是管理用户及其图像的一种非常简单的方法,它还确保在多个

我有一个与服务器通信的应用程序。在这个应用程序中,我有一个tableview,其中显示了我公司的几个人(他们的名字和姓氏以及他们的个人资料图像)

每当tableview打开或需要刷新时,我都会从服务器获取用户列表。这些用户都有一个image_名称,我试图在应用程序本身的数组中查找它。如果我在那里找不到它,我从documents目录加载它,如果我在那里找不到它,我也可以从我的服务器下载它,并在本地保存在设备上,以防止将来的下载

这非常有效,而且是管理用户及其图像的一种非常简单的方法,它还确保在多个用户具有相同图像时,我只下载一次图像(例如,当他们尚未上传图像时,公司徽标)

问题是,我没有保留这些用户的引用,因此应用程序不知道哪个用户使用了哪个图像,甚至不知道图像是否仍在使用

因此,当一个人有X图像时,它将被下载到iPhone上。如果用户A随后将其图像更改为Y,则应用程序将下载并正确显示图像Y。但是,图像X永远不会从持久数据中删除

我问你,stackoverflow社区,处理这个问题的最佳方式是什么

  • 我应该开始保留对我的用户的引用,这样我也可以保留对旧图像的引用吗
  • 有没有办法找到上次从documents目录中读取的时间戳和图像
  • 我应该在coreData中存储图像名称以及对它们的所有引用吗?(某种自定义弧逻辑)

  • 您可以向下载的图像添加前缀,在获取图像时,检查持久存储中的所有图像是否有此前缀,然后删除(如果有)。每次客户端回迁时,您应该只需要删除(最多)一个映像,这对客户端来说不会太重。

    在某个时间点,您有已使用映像的列表,在这个时间点,您还有一个保存到磁盘的映像列表。每天一次,您可以获取这些信息,并在后台线程上对使用的和保存的进行比较,然后删除它们。这不需要任何额外的数据存储


    如果您想让图像在停止使用后挂起一段时间,您可以在每次使用该文件时“触摸”该文件(更新
    fileModificationDate
    ),然后您可以检查所有图像的修改日期并在此基础上删除。

    fileModificationDate正是我要找的!我甚至不知道它的存在。