如何在我的 swift 框架中使用核心数据

Posted

技术标签:

【中文标题】如何在我的 swift 框架中使用核心数据【英文标题】:How to use core data into my swift framework 【发布时间】:2019-01-11 07:57:37 【问题描述】:

我必须创建一个可重用的框架,在内部使用离线存储来进行 api 请求,为此我想使用核心数据,因为我知道核心数据使用需要 appdelegate 实例。那么我该如何开始将核心数据用于我的框架中,这些数据与使用该框架的应用程序分开工作。

假设我创建了一个框架,它将在使用它的服务器上注册应用程序包 ID。因此,为此我必须使用 api 请求,重要的是要证明我的 api 肯定会刷新到服务器的请求,如果以某种方式请求失败需要将请求存储在应用程序中作为离线数据,以便我将使用它来刷新每当发现网络可达性时对服务器的请求。

请指导我如何开始工作。核心数据管理

我已经使用了以下步骤:

    制作 xcdatamodel 添加实体 并从编辑器创建 NSManageObject 子类。

发现给定图像中的错误

我正在使用 swift 4.2 开发 XCode 9.4.1

【问题讨论】:

CoreData 不需要应用程序委托。您可以从任何地方设置 CoreData 堆栈。 感谢@Cristik,您的宝贵回复。为此,我可以为核心数据管理创建管理器类,它是否与 appdelegate 一样工作 这些错误提示您将 codegen 设置为自动生成类文件,并且您还手动生成了它们。请参阅this question and its various answers 了解更多信息。 感谢@pbasdf 的错误,这对我有用 【参考方案1】:

您不需要 appdelegate 实例来使用核心数据。框架内的 CoreData 模型可以在目标/项目之间共享。

由于这是相当普遍的事情并且有很多可用的指南,这里是one,它逐步描述了该方法。

【讨论】:

感谢@***eta 没有得到解决方案。这也是现在上面提到的创建 xcode 错误【参考方案2】:

无效的重新声明是由于文件的重新创建。

你不需要从NSManagedObject创建实体子类

数据模型已经包含这些文件并且只构建一次。它应该可以正常工作。总之,不需要创建实体类。您可以直接访问这些实体。

希望对你有帮助...

【讨论】:

【参考方案3】:

这些错误表明您已将 codegen 设置为自动生成类文件,并且您还手动生成了它们。请参阅this question and its various answers 了解更多信息。

【讨论】:

以上是关于如何在我的 swift 框架中使用核心数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 3 在核心数据中搜索字符串?

我如何在单个提取请求中调用两个 NSPredicate。核心数据 iOS Swift

如何在核心数据swift 3中同时保存和获取

如何在我的 Swift 项目中包含一个库?

如何在 swift 中使用 MCOIMAPSession 邮件核心

如何根据查找具有特定值的实体在我的核心数据之间进行迭代