【问题标题】:Default Method of Built-in Persistent Storage Type Of Core Data In XcodeXcode中核心数据内置持久化存储类型的默认方法
【发布时间】:2019-04-10 10:11:40
【问题描述】:

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

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

【问题讨论】:

    标签: core-data swift4 swift4.2


    【解决方案1】:

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

    但是,当您在 Xcode 中选择 New ProjectNew Target 模板之一时,会生成一些模板代码。在当前版本(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 给出了一个基本的例子。如果这对你来说还不够,Keith Harrison 已经发布了一个相当 thorough reverse engineering of Xcode Project Templates

    【讨论】:

    • 感谢您的清晰解释
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2011-08-11
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多