几个月前,我开始研究需要CoreData实现的MacOS应用程序。今天,我开始研究基于相同Api且依赖于相同模型的相关iOS应用程序。我在项目中添加了iOS目标,并且互通了一些类(通过将它们添加到两个目标中),包括CoreData Stack:
我在两个目标上都添加了app.xcdatamodeld
我在两个目标上都添加了Object+CoreDataClass.swift
和Object+CoreDataProperties.swift
ManagedObjectsController
以支持iOS和MacOS实施通过为iOS和OSX定义appDelegate
,我可以用相同的方式访问它以获得上下文let context = appDelegate.persistentContainer.viewContext
工作正常,但我想知道我是否做对了。这是在两个目标之间相互访问appDelegate实例的正确方法吗?
我应该使用某种协议和通用类型吗?
还是应该为每个目标简单地构建ManagedObjectController?
谢谢
答案 0 :(得分:1)
如果您有多个要都支持通用功能的类,则声明协议会很有帮助。但是在这种情况下, UIApplication 和 NSApplication 已经支持您所需的常用功能!问题在于您需要访问两个不同的全局符号。
值得考虑的另一种选择是:声明一个类 AppDelegate ,然后移动那个脏的{而不是声明两个 IosAppDelegate 和 MacAppDelegate 类。 {1}}代码从您的 ManagedObjectsController 类中输入并进入 AppDelegate 中。然后,可以在需要引用共享应用程序委托的任何地方使用此 AppDelegate 。在大多数项目中,这不只几个地方。
但是,如果您想尽快将产品推出市场,并且此 ManagedObjectsController 是唯一需要共享应用程序委托的地方,那么您的代码就可以了。