2015-09-12 15 views
14

私はSwiftクラスをいくつかのターゲットにリンクしています。メインプロジェクトにはiOS 7の最小要件があり、iOS 8ターゲットの拡張があります。私はプロジェクトをコンパイルするとき警告:最低限のデプロイメントターゲットの不必要なチェック

は今、コンパイラは、このコード行に警告をスロー:

if #available(iOS 8.0, *) { ... } 

「『iOSApplicationExtension』の不要なチェック、最小デプロイメント・ターゲットは、ガードが常に真であることが保証されます」

Iビルド設定のオプションをチェックして、迅速な警告を殺すためのスイッチがないことを発見しました。

私はこのラインではなく、成功せず、別途iOSApplicationExtensionバージョンのターゲットを定義しようとしました:

if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... } 

はこの迷惑なメッセージを抑止する方法はありますか?

+1

このリンクはあなたに役立つかもしれません。https://forums.developer.apple.com/thread/15030 –

+1

拡張の最小デプロイメントターゲットはおそらくiOS 8です。これは '#available iOS 8.0、0) 'は常に真であり、つまり不要です。 –

+0

@ILikeTauアプリの拡張機能はiOS 8以降でのみ機能します。それが私がこれをした理由です。 – Mousavian

答えて

1

は警告を沈黙させる醜い回避策を見つけましたが、私はより良い方法がある願っています:iOSの8+ターゲットが設定を構築するには、私はビルド設定でプリコンパイルフラグを定義し

- >スウィフトコンパイラ - カスタムフラグ - >その他スウィフトフラグ:

-D iOS8target

は、その後、私は、このようにコードを変更:

#if iOS8target 
    // iOS 8+ compatible code 
#else 
    if #available(iOS 8.0, *) { 
     // repeat iOS 8+ compatible code again! 
    } else { 
     // iOS 7 code 
    } 
#endif 

リファクタリングされていないと醜いですが、それは動作します!

更新: すべての警告を省略するには、スウィフトコンパイラスイッチ-suppress-warningsがあります。しかし、それは有用な警告も抑制します。 また、警告を出力する特定のファイルが1つしかない場合は、Building Phasesペインで-wフラグを使用できます。また、有用な警告は抑制されますが、1つのファイルに限定されます。

+4

私はむしろ警告と一緒に住んでいるだろう:S – nobre

1

次のリリースのCocoapod(0.39.0以降)では、この問題に対処する必要があります。詳細についてはthisをご確認ください。

0

導入ターゲットを一般に確認し、9.0 から7.0以下に設定してください。この警告は自動的に削除されます。

+0

同じソースファイルを使用する異なるプロジェクトがあります。それを変更することはできません。 ios8 +から廃止予定のものがある場合は、8 + – Mousavian

+0

にする必要があります。そうすれば、古いクラスと新しいクラスの両方でコーディングする必要があります。オプションがありません。展開ターゲットを8に設定してください。 –

関連する問題