web-dev-qa-db-ja.com

エラー:IRGen式を作成できませんでした。追加のエラーはありません

UIテストでデバッグ情報を印刷できません。設定:Xcode 10およびSwift 4.2。

コンソールで何かを印刷しようとすると、エラーしか表示されません。

"error: Couldn't IRGen expression, no additional error" 

以前のバージョンのXcode(8、9など)では問題がなく、Xcode 10のみでした。ブレークポイントを設定して、たとえばapp po XCUIApplication()などを印刷しようとすると、何も印刷できません。

Xcodeの以前のバージョンでは、コンソールで記述します。

"po XCUIApplication.debugDescription()"アプリケーションの構造を見ました。

外部フレームワークがUI Tests Targetに追加されると、問題が発生することがわかりました。問題を再現するために使用できるRxSwift.frameworkを含むサンプルプロジェクトを作成しました。

https://drive.google.com/file/d/1BlByFVNaOdDqT4ED9Jwyi1kJ99PTRQen/view?usp=sharing

よろしく。

23
Paweł Zemsta

Carthageでも同じ問題がありました。ただし、コンソールをより詳しく調べていると、RxSwiftをビルドする代わりに、事前にビルドされたバイナリをダウンロードしただけでなく、Carthageが、

*** Downloading RxSwift.framework binary at "Zürich"

その結果、IRGenエラーが発生します。したがって、バイナリをダウンロードする代わりにフレームワークを構築することをCarthageに強制することができました。

carthage update --platform iOS --no-use-binaries
21
MichaelV

Swiftデバッグ形式はSwift内部オブジェクトのバイナリダンプであるため、使用しているデバッガに同梱されているコンパイラでバイナリをコンパイルする必要があります。物事はひどく行きます。

Xcode 10.0と提供されたプロジェクトを使用して、表示されている動作を再現できます。しかし、その後、githubからRxSwiftソースを取得し、Xcode 10.0コンパイラーでそれらを再構築し、RxSwift.frameworkをローカルで構築したものに置き換えてテストを再実行すると、ブレークポイントにアタッチした式が正しく機能しました。それがあなたにも役立つかどうかわかりますか?

Swiftバグレポーター( http://bugs.Swift.org )でバグを報告する場合、デバッガーはより良いエラーメッセージを提供する必要があります。エラーメッセージの改善を見ることができます。

4
Jim Ingham

Carthage-RxSwiftでも同じ問題がありました。

からファイルを削除する

カルタゴ/ビルド/...

カルタゴ/チェックアウト/

そして、ターミナルでcarthage updateを呼び出すと、問題が解決しました。

更新:

この問題は、RxSwiftライブラリをバージョン4.3以降に更新する場合にのみ発生することがわかりました。バージョンを4.2.xに設定すると正常に機能します。

2
Arijan

フレームワークが正しく接続されているかどうかを確認してください。私の場合、PODの置換フレームワークがこの問題を解決しました。

0
Pet