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.
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.
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.
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://
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