【问题标题】:Use of Core Data model in Widget / Today View Extension?在小部件/今日视图扩展中使用核心数据模型?
【发布时间】:2014-08-11 19:01:39
【问题描述】:

我正在构建一个 Today View Extension (Widget),它需要与其包含的应用共享数据。我在包含的应用程序中大量使用核心数据,因此我想使用核心数据作为在两个程序之间共享公共数据库的一种方式。这意味着我也需要知道对象图模型和小部件代码中的所有模型类。

在应用程序扩展编程指南中,Apple 说我们应该使用将代码封装到框架中,以便在包含应用程序和小部件之间共享它。但在 Framework 编程指南中,明确规定创建 Framework 时应仅封装非特定于应用程序的代码,而应封装可普遍重用的代码。

所以我的问题是:

  • 构建一个封装我的所有模型类 + 我的核心数据对象模型图的框架是在包含应用程序和小部件之间共享业务逻辑的好方法吗?
  • 您如何将整个核心数据模型包含到一个框架中,因为框架似乎并非专门为此而设计的?

【问题讨论】:

    标签: ios ios8 ios-frameworks


    【解决方案1】:

    根据您的标准和要求,将您的核心数据堆栈封装在嵌入式框架目标中是有意义的。我想说这不仅是一个好方法,而且是唯一的方法,不重复模型和逻辑。

    我不确定您在第二个问题中所说的“框架似乎并非旨在做到这一点”是什么意思。框架只是另一个目标,您应该能够创建一个核心数据模型文件,其目标成员是您的框架。然后,您可以在框架 API 中使用一些更高级别的方法,该方法根据框架中包含的模型返回 NSManagedObjectContext

    您还需要为您的底层持久存储文件(通常是您的 sqlite 文件)设置一个应用组。为了让您的 Widget 和 Containing App 能够读取和写入同一个文件,该文件必须位于两个都有权访问的 App Group 中。

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多