web-dev-qa-db-ja.com

UNUserNotificationCenterリンクエラー

Xcodeプロジェクト、Xcode 8.1(8B62)の2つのターゲットがあり、1つは有料バージョンのアプリケーション用で、もう1つは無料バージョン用です。どちらもリモコンのプッシュ通知を管理します。新しいフレームワークUNUserNotificationCenter.framworkを使用してiOS 10に変更を加えたため、最初のターゲットではすべて問題なく、2番目のターゲットではリンクエラーが発生しています。 iOS 9では古い方法でうまく機能しました。両方のターゲットに対して私がしたこと:

  • 機能:有効なプッシュ通知(資格は適切に更新されます)
  • AppDelegate.h:#import
  • AppDelegate.m内:新しいメソッドでコードを更新

どちらのターゲットでも同じコードです。

残念ながら、2番目のターゲットでは、次のエラーが発生します。

アーキテクチャarm64の未定義のシンボル: "_OBJC_CLASS _ $ _ UNUserNotificationCenter"、以下から参照:Objc-class-ref in AppDelegate.o Ld:symbol(s)not found for architecture Clang:error:failed with exit code 1(use- v呼び出しを確認する)

私は何度もクリーンでクリーンなビルドターゲットフォルダーを実行し、Xcodeを再起動し、コンピューターを再起動しましたが、何も行われていません。

別のフォーラムには何も見つかりません...

助けを歓迎します。前もって感謝します。

14
Patrick Bodet

UserNotifications.frameworkにリンクしていません。

  • ターゲットを選択してください
  • 「ビルドフェーズ」を表示する
  • 「バイナリとライブラリをリンクする」にUserNotifications.frameworkが存在することを確認してください

そうでない場合:

  • 「+」ボタンをクリックして追加します
35
shallowThought

私はほぼ同じ問題を抱えていました。1つは無料バージョン、もう1つは有料バージョンです。

1つのターゲットでは「モジュールの有効化」がYES(これは無料バージョンのターゲットであり、Admobの@importを実行していた)であるのに対し、もう1つのターゲットでは「モジュールの有効化」が異なることを強く疑っています番号。魔法のように、「モジュールの有効化」がYESであるターゲットのビルドフェーズの「ライブラリとバイナリをリンク」にUserNotifications.frameworkを追加する必要はありませんでした。ただし、「モジュールの有効化」がNOであるターゲットの場合、

Undefined symbols for architecture arm64:   "_OBJC_CLASS _ $ _ UNUserNotificationCenter

そして、「Link Binary with Libraries」にUserNotifications.frameworkを手動で追加することで廃止されました。

したがって、おそらくルールは、モジュールが有効になっていない場合にのみ行う必要があります。

2
auspicious99

UserNotifications.frameworkTarget > General > Linked Frameworks and Librariesに存在することを確認してください

1
Munahil