web-dev-qa-db-ja.com

Swift上のクラス拡張とカテゴリSwiftクラスは+ loadメソッドを持つことができません

Xcodeバージョン10.2(10E125)を更新し、デバイス(シミュレータだけでなく)でテストしました

アプリを実行すると、次のメッセージが表示されます。

objc [3297]:Swift上のクラス拡張とカテゴリSwiftクラスは+ loadメソッドを持つことができません

  • IOS 12.2を搭載したデバイスでは機能しません。 Swiftクラスに影響を与えていた更新があったかどうかを知りたい。これまで他のフォーラムでこれに関する答えはないが、Apple本番環境の他のアプリにも問題があります。

-Swiftクラスの拡張機能を使用していますが、それが問題だとは思いません

  • CocoapodsとFirebaseの依存関係の使用。

  • プロジェクトで「ロード」関数を含む可能性のある関数を検索しましたが、見つかりませんでした。

助けてください

22
Daniel Bastidas

Reactネイティブプロジェクトのソリューションを追加するだけです。

この問題は、カスタムの反応ネイティブモジュールの1つがinit関数を呼び出すRCT_EXPORT_MODULE()マクロを使用していて、Swiftコードも含めていたために発生しました。反応ネイティブバージョン0.59.3、initへの呼び出しを回避する新しいマクロRCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)があります。RCT_EXPORT_MODULE()RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)に置き換えて更新ネイティブバージョン0.59.3に対応して問題を修正しました。

7
Ethan Worley

私の場合、+ loadメソッドを持つ唯一の依存関係はRxAtomicです。ちなみに、現時点でSwift 5.0に更新されなかったのはこれだけです。そのため、このバグはRxSwiftによって引き起こされたと考えられます。また、Swinjectsの依存関係もありますが、更新されました。 Swift 5をサポートする最新リリースすべて-それは助けにはなりませんでした。

[〜#〜]編集[〜#〜]

ポッドプロジェクトファイルを開くだけです。 RxAtomic Targetを選択します。そして、ユーザー定義プロパティ 'Swift_VERSION'を5.0から4.2に変更します。そしてそれは機能します!!!

4
Nikita Haiko

現時点ではクイックフィックス:

  • 以前のバージョンのダウンロード Xcode 10.1

それが完了したら、プロジェクトを再構築すると、どのデバイスでも問題なく機能します。

問題はSwift 5.に関連していると思います。おそらくすべての依存関係をSwift 5.に更新する必要があります。そうする時間がある。


長い修正:ポッドを更新し、ゆっくりとSwift5に移行します。

さらに問題を引き起こしていたポッドは、SwinjectStoryboardを備えたSwinject、およびRxOptionalでした。

4
Daniel Bastidas

react-nativeバージョンにアップグレード^0.59.5

RCT_EXPORT_MODULE_NO_LOADなしで解決しました

反応ネイティブバージョンを更新するには、

rm -rf node_modules
yarn add react-native@^0.59.5

これにより、他の依存パッケージが新しいバージョンで更新されます

2
MustafaSkir

同じ問題があり、ポッドを更新するだけでした。 Swinjectポッドが問題を引き起こしており、最新バージョンに更新した後、すべてが解決されました。ポッドターゲットでSwift言語バージョンを調整してみることもできます。

0
Mile Dev