我正在尝试从一个CoreData中阅读iMessage Extension (MSMessagesAppViewController),但是由于没有AppDelegate,所以也没有managedContext。
有没有人知道这是可能的?是否有可能“实例化我的应用程序的AppDelegate”或类似的东西?
更新:如何访问应用程序中的核心数据--和--扩展:解决方案是使用AppGroup容器。
发布于 2016-09-22 16:50:58
使用Core数据与是否存在应用程序委托无关。它们是两种不同的东西。您可以将它们放在上,但是Core和应用程序委托都不需要这样做。这样做甚至不是很好的设计。应用程序代表的工作是响应应用程序生命周期事件,如启动、进入后台等,同时也参与管理应用程序数据的单独工作也是糟糕的设计。
如果您在Xcode中创建一个新项目,并选中“”框,则Xcode将在app委托类中包含用于设置应用程序核心数据的方法。但是,该代码可以在任何类中运行。要求该代码在该类中的应用程序委托没有什么特别之处。仅仅因为Xcode将该代码放在该类中,并不意味着它是必需的。如果您需要在应用程序扩展中使用Core数据,这就是您要做的。
一种常见的方法是创建一个新的类来管理核心数据。将所有的核心数据堆栈管理代码放在那里,而不是在应用程序委托中。应用程序委托可能会在应用程序中创建这个类的实例。在应用程序扩展中,可以在扩展类型需要的地方实例化类。
https://stackoverflow.com/questions/39450558
复制相似问题