在今天的扩展中使用 AppDelegate

hor*_*rst 5 ios appdelegate swift ios8-today-widget today-extension

我正在尝试为我的应用程序构建一个今天的扩展。

我正在使用CoreDataandNSFetchedResultsController并收到以下错误:

使用未声明的类型“AppDelegate”

在这行代码中:

var appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate. 
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个错误/在今天的扩展中使用 AppDelegate 并愿意帮助我吗?

dun*_*nc4 2

Today Extension 不是应用程序,因此 UIApplication 和 AppDelegate 不可用。我不确定你想用 AppDelegate 做什么,但扩展确实有一个NSExtensionContext可以通过调用:

 self.extensionContext
Run Code Online (Sandbox Code Playgroud)

  • NSFetchedResultsController 不依赖于 UIApplicationDelegate。如果你想在 Today 扩展中使用它,只需在 TodayViewController 中使用它即可。我猜测在您的应用程序中,您在 AppDelegate 中使用 NSFetchedResultsController 来从 CoreData 获取结果。如果您想在应用程序和扩展程序之间共享此代码,则需要将此代码从 AppDelegate 移出并移入应用程序和扩展程序都可以使用的框架中。 (2认同)