Question Le widget d'extension iOS 8 Beta Today ne s'affiche pas dans une application Swift?


Aujourd'hui, l'extension ne s'affiche pas dans une application Swift, mais dans une application Objective C.

Ce que j'ai fait a été d'ajouter un UILabel avec du contenu sur le storyboard pour les applications c rapides et objectives.

Il est apparu lorsque j'ai exécuté l'application Objective C, mais pas lorsque j'ai exécuté l'application Swift.

Est-ce que j'ai râté quelque chose?


19
2018-06-06 05:20


origine


Réponses:


Vous pouvez commenter la méthode init fournie.

//    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
//        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//        // Custom initialization
//    }

Cela permettra à votre extension de fonctionner correctement. Le problème semble être dû à un comportement différent de l'initialiseur entre Swift et Objective-C. La suppression de l'initialiseur ci-dessus héritera de tous les initialiseurs requis de la superclasse.

Trouvé cette solution sur les forums de développeurs Apple pour votre référence

Note: Vous devrez peut-être Clean and Build votre projet après avoir fait cela avant que les changements auront un effet

L'extension est en fait se briser, avec une erreur comme:

fatal error: use of unimplemented initializer 'init(coder:)' for class 'com_blabla_blabla_MyTodayExtension.TodayViewController'

Cela indique qu'une autre option serait d'implémenter:

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
    // Custom initialization here
}

si vous souhaitez conserver la possibilité d'effectuer une initialisation personnalisée.


26
2018-06-06 20:54



Une cible d'extension d'application doit inclure arm64 (iOS) ou x86_64   l'architecture (OS X) dans ses paramètres de construction Architectures.

Voir La documentation d'Apple


3
2017-09-24 09:07



Xcode6 est une version bêta et c'est un bogue, vous devrez attendre une nouvelle version.


2
2018-06-06 05:43



Le problème pour moi était que la cible de déploiement de l'extension était définie sur une version différente de la cible de mon application. Vous devez confirmer que la cible de l'extension est définie correctement car elle peut cibler une version différente.

enter image description here


1
2017-10-26 22:54