使用 Core Data 存储 NSTemporaryDirectory 中的文件状态

Posted

技术标签:

【中文标题】使用 Core Data 存储 NSTemporaryDirectory 中的文件状态【英文标题】:Using Core Data for storing files state that are in the NSTemporaryDirectory 【发布时间】:2014-05-15 08:11:18 【问题描述】:

每个 ios 应用程序都有文件夹,我们可以在其中存储一些从 Internet 下载或直接从应用程序创建的文件。

因此,当我将文件下载到 NSTemporaryDirectory 时,我还会将此文件作为实体附加到核心数据中。

例如,我下载了文件 description.pdf,在这一点上,我创建了具有此文档完整路径的实体。

coreDataEntityFile.path = NSTemporaryDirectory/根文件夹/文件夹/description.pdf

我已经跳过[NSString @"%@"] 没关系;

为什么我需要在 Core Data 中存储文件?

我的文件管理器需要它,核心数据显示文件是否处于活动状态、已打开或其他状态。

我的问题是什么?

假设我在这里有 10000 个文件 NSTemporaryDirectory / Root Folder / Folder / 并假设我想将 Folder 重命名为 My Folder

所以路径将是 NSTemporaryDirectory / 根文件夹 / 我的文件夹 /

但核心数据仍然不涉及更改,如果我想更改核心数据中的这个目录,我需要使用新路径重命名所有 coreDataEntityFile.path

但是对于 10000 这不是一个好的解决方案。

所以我只是重命名文件夹,我想也许我需要使用一些不平凡的方法。

【问题讨论】:

【参考方案1】:

您应该考虑使用 NSURL 及其书签功能。来自苹果:

在 OS X v10.6 及更高版本中,NSURL 类为 创建和使用书签对象。书签提供了一个持久的 对文件系统资源的引用。当您解析书签时,您 获取资源当前位置的 URL。一个书签 与文件系统资源(通常是文件或文件夹)的关联 如果用户移动或重命名资源,通常会继续工作, 或者如果用户重新启动您的应用或重新启动系统。

来源:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

这样文件路径的改变对你来说是无关紧要的,并且书签将一直是最新的。我还没有在 iOS 上尝试过这个临时目录,但我看不出它不应该在那里工作的原因。

【讨论】:

以上是关于使用 Core Data 存储 NSTemporaryDirectory 中的文件状态的主要内容,如果未能解决你的问题,请参考以下文章

iphone数据存储之-- Core Data的使用

如何使用 Core Data 和 iOS 5 存储指南?

使用 Core Data 存储 NSTemporaryDirectory 中的文件状态

如何在 Core Data 中存储星期几?

iOS:Swift:Core Data:值不使用 Private ManagedObjectContext 存储

是否可以使用RestKit将本地数据存储在Core data中而无需网络通信