使用 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 中的文件状态的主要内容,如果未能解决你的问题,请参考以下文章
使用 Core Data 存储 NSTemporaryDirectory 中的文件状态