web-dev-qa-db-ja.com

UIApplication.sharedApplication()は使用できません

XCode6.4からXcode7にアップグレードしたばかりですGMそしてSwift 2。に準拠するようにコードを変更し始めました。

プロジェクトはキーボード拡張機能であり、スニペットは含まれているアプリからのものです。

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

エラー1:「sharedApplication()」は使用できません:代わりに、必要に応じてビューコントローラベースのソリューションを使用してください。

エラー2:「openURL」は使用できません。

これはXcodeとAppDelegateに関係している可能性があり、プロジェクトを台無しにした可能性があります。

12
Ahmet Akkök

アプリを含むクラスは、どういうわけか、拡張ビルドフェーズのコンパイルリソースリストに入りました。私はそれらを削除しました、それは今大丈夫です。

私はそれをしなかった。明らかにXcode7にアップグレードGMプロセスはどういうわけかそれをしました。

2
Ahmet Akkök

フレームワークを作っている間。私はこの問題に直面しました。手動でNOに設定すると、問題は解決しました。

enter image description here

21
Stephen Chen

拡張機能からすべてのAPIにアクセスできるわけではありません。 Appleの拡張機能開発ガイドから:一部のAPIはアプリ拡張機能で使用できません

システムでの役割が集中しているため、アプリ拡張機能は特定のアクティビティに参加できません。アプリ拡張機能は次のことができません:

sharedApplicationオブジェクトにアクセスするため、そのオブジェクトのメソッドを使用できません

などなど。

21
Scott Austin

ターゲットで[アプリ拡張APIのみを許可する]オプションがオンになっている可能性があります。

ターゲットの一般設定をチェックして、[展開情報]> [アプリ拡張機能]でそのオプションが有効になっているかどうかを確認します。

enter image description here

10
Senseful

Swift 3.0

私の場合、ウィジェット(拡張機能)内にこのメッセージがあり、コードはアプリからのコピー/貼り付けでした。そしてトム・ロジェロが言ったように私は交換しなければならなかった

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

沿って

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

こんにちは私はこの問題を解決しました。

IQKeyboardManagerのようなこのeエラーを与える特定のフレームワークにAPI拡張を許可するように設定します

IQKeyboardManagerでこの問題に直面し、ポッドを使用してこのフレームワークをインストールしたと考えてください。次に、プロジェクトで[ポッド]-> [IqkeyboardManagerのクリック]をクリックします。

そして、[API拡張を許可]を[いいえ]に設定します

enter image description here

1
Manish Mahajan