Xcode中核心数据内置持久化存储类型的默认方法

Default Method of Built-in Persistent Storage Type Of Core Data In Xcode

根据apple doc的Persistent Store Types and Behaviors,核心数据内置的持久化存储类型有 1. XML 2.二进制 3. SQLite 4. 记忆中

我的问题是, 其中,我们在 xcode 中使用核心数据模型时的默认存储类型以及我们如何更改它

嗯,NSPersistentStore 是一个抽象基础 class。它的四个子class之一必须在代码中有意创建。所以,实际上并没有 default 商店类型。

但是,当您选择 New ProjectNew Target 模板之一时,会生成一些模板代码42=]。在当前版本 (Xcode 10) 中,当您打开 Use Core Data 复选框时,您会在 AppDelegate 实现中获得一个 lazy var persistentContainer 属性 它提供了一个单例 NSPersistentContainer 对象。默认情况下,这是您将在新目标中使用的商店。但那是什么商店类型?那么,NSPersistentContainer 的持久存储在其 persistentStoreDescriptions 数组 属性 中指定。默认情况下,此数组包含一个 SQLite 类型的持久存储,由应用容器的 Application Support 文件夹中的文件支持。这就是您询问的默认商店类型

更改此商店类型的过程在 the documentation of NSPersistentContainer.persistentstoredescriptions 讨论 部分进行了说明。

所以你看到 default 实际上是在 Xcode 项目模板中。为了得到你想要的,你可以将你在阅读该文档后编写的代码放入一个新的项目模板并将其添加到你的 ~/Library。您可以覆盖其中一个默认项目模板,或使用新名称创建您自己的项目模板。 blog post by Jake Craige. If that is not enough for you, Keith Harrison has published a quite thorough reverse engineering of Xcode Project Templates.

中给出了一个基本示例