设备上的核心数据存储位置

Posted

技术标签:

【中文标题】设备上的核心数据存储位置【英文标题】:Core-Data Store Location on Device 【发布时间】:2014-03-16 00:32:37 【问题描述】:

我正在将一个应用程序转换为 iCloud 对核心数据的支持。在加载 NSMangagedObjectContext 之前,我喜欢访问元数据以确定起始模型版本。这会告诉我在进行任何自动模型迁移之前的起始状态,以便我可以解决版本之间的任何问题。获取我使用过的元数据:

NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:nil URL:storeURL error:&error];

我的问题是我在 iCloud 中的核心数据存储我不知道如何找出设备上的文件 URL,我可以在文档目录中看到它,但我不知道如何让 ios 告诉我路径。

有没有办法获取文件路径还是我想错了。

【问题讨论】:

请向 Apple 记录一个错误,因为他们没有提供任何方法来执行此检查或获取实际的商店文件名,而无需您自己手动扫描磁盘上的文件以查找商店文件,并且那里可能有多个此类文件,具体取决于 iCloud 帐户。 【参考方案1】:

好吧,因为至少有人同意这是不可能的,所以我在不允许迁移的情况下创建了 NSPersistantStoreCoordinator,而不是从创建的错误中提取当前模型版本。这可行,但似乎是一种倒退的方式。

【讨论】:

【参考方案2】:

使用 Core Data,您总是知道商店在哪里,无论您是否使用 iCloud。它是你告诉 Core Data 放置它的地方。使用 iCloud,Core Data 将事务日志写入 iCloud 容器,但持久存储仍然在您想要的任何位置。

当您致电addPersistentStoreWithType:configuration:URL:options:error: 时,您会提供一个指明商店位置的文件 URL。这就是它的位置。商店的位置没有 iCloud 魔法,它就在您放置的任何地方。您可能在此之前调用了URLForUbiquityContainerIdentifier:,但这也会为您提供一个正常的文件 URL。

【讨论】:

根据我的经验,情况并非如此。您为其提供的 URL 将成为文件路径的根位置,该文​​件路径会根据设备和用户 iCloud 设置而变化。

以上是关于设备上的核心数据存储位置的主要内容,如果未能解决你的问题,请参考以下文章

在核心数据中存储文件路径会引发异常

将文件保存在设备存储上

在应用程序上的许多用户之间共享核心数据

在 iPhone 上的核心数据中存储二进制数据

如何存储位置数据以使用核心数据进行跟踪?

iOS 核心数据存储在 iCloud 中以与其他设备同步