web-dev-qa-db-fra.com

UIApplication.sharedApplication () n'est pas disponible

Je viens de mettre à niveau de XCode 6.4 vers Xcode 7 GM et de commencer à modifier le code pour qu'il soit conforme à Swift 2. Je ne pouvais pas résoudre les erreurs suivantes.

Le projet est une extension de clavier et l'extrait provient de l'application qui le contient.

    let s = "https://iTunes.Apple.com/"
    UIApplication.sharedApplication().openURL(NSURL(string : s)!)

Erreur 1: 'sharedApplication ()' n'est pas disponible: utilisez plutôt des solutions basées sur le contrôleur de vue.

Erreur 2: 'openURL' n'est pas disponible.

Cela pourrait être quelque chose à voir avec Xcode et AppDelegate, j'ai peut-être foiré mon projet.

10
Ahmet Akkök

Les classes de l'application contenue sont en quelque sorte entrées dans la liste des ressources de compilation dans l'extension Build Phases. Je les ai supprimés, ça va maintenant.

Je n'ai pas fait ça. Évidemment, la mise à niveau vers Xcode 7 GM a été effectuée.

2
Ahmet Akkök

Vous ne pouvez pas accéder à toutes les API à partir d'une extension. Extrait du guide de développement Apple Extension: certaines API ne sont pas disponibles pour les extensions d'application.

En raison de son rôle spécifique dans le système, une extension d'application n'est pas éligible pour participer à certaines activités. Une extension d'application ne peut pas:

Accède à un objet sharedApplication et ne peut donc utiliser aucune des méthodes de cet objet

etc.

18
Scott Austin

Alors que je faisais un cadre. J'ai fait face à ce problème. Le régler manuellement sur NON a résolu mon problème.

 enter image description here

17
Stephen Chen

L'option "Autoriser l'API d'extension d'application uniquement" peut être cochée sur votre cible.

Vérifiez les paramètres généraux de votre cible pour voir si cette option est activée dans Informations de déploiement> Extensions d'application.

 enter image description here

9
Senseful

Swift 3.0

Dans mon cas, j'avais ce message dans un widget (c'est une extension), le code était un copier/coller de mon application. Et comme Tom Roggero a dit que je devais remplacer

UIApplication.shared.open(NSURL(string:"https://

par

self.extensionContext?.open(NSURL(string:"https://
5
tolbard

Salut j'ai résolu ce problème.

Définissez Autoriser l'extension de l'API sur Non pour un framework particulier qui donne cette e erreur, comme IQKeyboardManager.

Considérez que vous êtes confronté à ce problème pour IQKeyboardManager et que vous avez installé ce cadre à l’aide de Pod. Ensuite, votre projet cliquez sur Pod -> CLick sur IqkeyboardManager.

Et définissez Autoriser l'extension API sur Non

 enter image description here

1
Manish Mahajan