我正在构建一个需要与其包含应用共享数据的Today View Extension(Widget)。我在包含应用程序中使用了大量核心数据,因此我想使用Core Data作为在两个程序之间共享公共数据库的方法。这意味着我还需要了解对象图模型以及窗口小部件代码中的所有模型类。
在App扩展编程指南中,Apple表示我们应该使用封装代码到框架中,以便在包含应用程序和窗口小部件之间共享它。但是在框架编程指南中,明确写出只应创建框架以封装非特定于应用程序的代码,但应封装可以通用的代码。
所以我的问题是:
答案 0 :(得分:2)
根据您的标准和要求,将核心数据堆栈封装在嵌入式框架目标中是有意义的。我会说这不仅是一种好方法,而且是不重复模型和逻辑的唯一方法。
我不确定你的意思"框架似乎并不是为了做到这一点而设计的。在你的第二个问题。框架只是另一个目标,您应该能够创建一个Core Data模型文件,其目标成员资格是您的框架。然后,您可以在框架API中使用一些更高级别的方法,该方法基于框架中包含的模型返回NSManagedObjectContext
。
您还需要为基础持久性存储文件(通常是sqlite文件)设置应用程序组。为了使您的Widget和Containing App能够读取和写入同一文件,该文件必须位于具有权利的应用程序组中。