iMessage 扩展和 CoreData
Posted
技术标签:
【中文标题】iMessage 扩展和 CoreData【英文标题】:iMessage Extension and CoreData 【发布时间】:2016-09-12 12:40:04 【问题描述】:我正在尝试从 iMessage 扩展 (MSMessagesAppViewController) 中读取 CoreData,但由于没有 AppDelegate,因此也没有 managedContext
。
有人知道这是否可能吗? 是否可以“实例化 AppDelegate”我的应用程序或类似的东西?
更新:如何在应用和扩展中访问核心数据:解决方案是使用 AppGroup 容器。
【问题讨论】:
您不需要应用程序委托来使用 Core Data。两者完全无关。 @TomHarrington 您介意对此进行扩展,作为问题的答案吗? :) 【参考方案1】:使用 Core Data 与是否有应用程序委托无关。它们是两个不同的东西。您可以将它们放在一起,但 Core Data 和应用程序委托都不需要这样做。这样做甚至不是很好的设计。应用委托的工作是响应应用生命周期事件,例如启动、进入后台等,同时混合管理应用数据的单独工作是糟糕的设计。
如果您在 Xcode 中创建一个新项目并选中“使用 Core Data”框,Xcode 将在应用委托类中包含用于为应用设置 Core Data 的方法。但是该代码可以放在任何类中。要求该代码在该类中的应用程序委托没有什么特别之处。仅仅因为 Xcode 将该代码放在该类中并不意味着它是必要这样做的。如果您需要在应用程序扩展中使用 Core Data,那就是您要做的。
一种常见的方法是创建一个新类来管理 Core Data。将所有核心数据堆栈管理代码放在那里,而不是在应用程序委托中。应用委托可能会在您的应用中创建此类的实例。在应用扩展中,可以在任何需要扩展类型的地方实例化该类。
【讨论】:
感谢@TomHarrington,同时我知道 AppDelegate 不是必需的。但要从扩展访问数据,需要 AppGroup 容器。 @KevinLieser 是的,但您的问题专门询问了没有应用程序委托时该怎么做。正如您所建议的那样,实例化应用程序委托不是正确的方法。 @TomHarrington,好的,所以我遇到了一个稍微类似的问题。我不想将情节提要用于 iMessage 应用程序。我将如何实例化视图控制器或更确切地说是窗口? @Shyam 这与这里提出的问题不同。您应该提出一个新问题,而不是更全面地描述您的情况。 @TomHarrington,我似乎找到了办法。让我试试它是否按预期工作。但是,感谢您花时间回复。 :)以上是关于iMessage 扩展和 CoreData的主要内容,如果未能解决你的问题,请参考以下文章