代码之家  ›  专栏  ›  技术社区  ›  Crocobag

iOS和MacOS目标共享CoreData的Xcode项目

  •  1
  • Crocobag  · 技术社区  · 7 年前

    几个月前,我开始开发一个需要CoreData实现的MacOS应用程序。今天,我开始研究一个基于相同Api的相关iOS应用程序,尽管它依赖于相同的模型。我在我的项目中添加了我的iOS目标,并将一些类(通过将它们添加到两个目标中)共同化,包括CoreData堆栈:

    1. 我加了我的名字 app.xcdatamodeld 在两个目标上

    2. 我加了我的名字 Object+CoreDataClass.swift Object+CoreDataProperties.swift 在两个目标上

    enter image description here

    1. 我修改了我的 ManagedObjectsController

    enter image description here

    通过定义 appDelegate 对于iOS和OSX,我可以以相同的方式访问它以获取上下文 let context = appDelegate.persistentContainer.viewContext

    它工作得很好,但是 我想知道我是否做得对 . 这是在两个目标之间共同访问appDelegate实例的正确方法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jerry Krinock    7 年前

    如果您有多个希望同时支持公共函数的类,那么声明协议将有所帮助。但在这种情况下,, UIC应用程序 和 不适用

    和 麦卡普代表 AppDelegate ,然后把它移走 #if 从你的 ManagedObjectsController 进修 AppDelegate . 那么这个 AppDelegate

    但是如果你想让你的产品尽快上市,这 ManagedObjectsController 是您唯一需要共享应用程序委派的地方,您的代码很好。