Comment referencer l'AppDelegate à partir d'un widget Vue d'aujourd'hui?

J'ai donc un widget Vue d'aujourd'hui construit à partir de mon application principale, et j'essaie d'accéder à certaines données stockées (via CoreData). Mais quand je crée la variable paresseuse pour gérer une de mes entités, elle ne parvient pas à comstackr. Je comprends l'erreur qu'il lance, mais je ne suis pas sûr de savoir comment le gérer / réparer.

lazy var managedObjectContext : NSManagedObjectContext? = { let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate if let managedObjectContext = appDelegate.managedObjectContext { return managedObjectContext } else { return nil } }() 

L'erreur est renvoyée à la ligne 2 à … "en tant que AppDelegate" qu'il s'agit d'une "utilisation non déclarée de AppDelegate". Ce que je suppose est logique car AppDelegate se trouve dans le dossier de l'application de base et non dans le dossier du widget. Mais je suis à une perte de comment replace ou réparer ceci pour que le code comstackra et fonctionnera. Des idées?

Tu ne peux pas. Les extensions sont des binarys entièrement séparés de votre set d'applications principal, où se trouve le délégué de votre application. Vous devez créer une bibliothèque partagée qui sera utilisée par votre regroupement d'applications principal et votre extension, ou faire beaucoup de copyr-coller. (la première méthode est préférée).

À partir des guides du développeur :

Vous pouvez créer un cadre embedded pour partager du code entre votre extension d'application et son application contenant. Par exemple, si vous développez un filter d'image à utiliser dans votre extension Photo Editing ainsi que dans l'application qui le contient, placez le code du filter dans un cadre et intégrez le cadre dans les deux cibles.

Vous n'avez pas besoin de créer une bibliothèque linkable formelle si vous ne le souhaitez pas. Assurez-vous simplement que la bibliothèque que vous écrivez ne fait pas reference aux API qui ne sont pas disponibles pour les extensions.

Assurez-vous que votre infrastructure embeddede ne contient pas d'API indisponibles pour les extensions d'application, comme décrit dans la section Certaines API ne sont pas disponibles pour les extensions d'application . Si vous disposez d'un framework personnalisé contenant de telles API, vous pouvez en toute security créer un lien depuis votre application, mais vous ne pouvez pas partager ce code avec les extensions contenues dans l'application. L'App Store rejette toute extension d'application liée à de tels frameworks ou utilisant autrement des API non disponibles.