Xcodeで「前提条件エラー」をデバッグする方法は?


9

Xcode 11でSwiftUIアプリを作成していますが、アプリの特定のタブに切り替えるとすぐに終了します。

事は、それは常にApplication Delegateファイルを指していますが、それは本当に問題ではないと思います。コンソールでもこの​​エラーが発生してprecondition failure: invalid input index: 2いますが、それだけです。このエラーの原因となっているファイル、配列、または関数に関する詳細はありません。

ここに画像の説明を入力してください

この問題の原因となっているXcodeを特定する方法はありますか?


コンソールに表示されているものを印刷しますか?インデックスが範囲外のエラーである可能性があります。目的のView Controllerにある可能性のあるアレイを確認してください。または、Tabで移動しているViewControllerが初期化され、tabController.viewControllers配列にあることを確認します。
アレクサンダー

こんにちは@Alexander、初期化のために、私のビューが正しく初期化されていると確信しています。そして、はい、私はそれが配列の問題だと思っていますが、そのビューとそのサブビューは配列で満たされているため、どの関数のどの配列でどのクラスかわかりません。そのため、正しくデバッグする方法を知りたいのです。現在、私はコードで多くのことを変更しようとしています。(知らないうちにでも)修正が適用されることを期待しています。
グレー

私はこれを非常によく似た状況で受け取っています。私にとって、アプリは同じエラーとデバッグコンソール出力でクラッシュします。これはC ++の前提条件エラーのようです(つまり、Swift内-したがって、ブレークポイントでは機能しません)。私にとっては、GeometryProxyのサイズにアクセスしようとすると発生します。
Daniel Thorpe

ここに同じ@Binding
-GeometryProxy

私に起こります。スタックの次の呼び出しはGeometryProxy.size.getter()ですが、特定の順序でSwiftUIタブにアクセスした場合にのみ発生します。GeometryReaderは、クラッシュを引き起こすタブでのみ使用されます(クラッシュは、そのタブが3番目にアクセスされた場合にのみ発生します)。
tarasis

回答:


10

リストを使用するビューを含むTabViewがありました。タブを切り替えると、アプリが同様のエラーでクラッシュしました:「前提条件の失敗:属性が初期値を設定できませんでした:99」これがクラッシュしました:

var body: some View {
    TabView {
        ListView()
        .tabItem {
            Image(systemName: "list.dash")
            Text("List")
        }

NavigationViewでListViewをラップすると、クラッシュが修正されました。-私は「007 SwiftUI TabView &&一覧スウィフトライブ」にNavigationViewのこの使用見たカレブウェルズhttps://youtu.be/v1A1H1cQowI

https://github.com/calebrwells/A-Swiftly-Tilting-Planet/tree/master/2019/Live%20Streams/TabView%20List

これはうまくいきました:

var body: some View {
    TabView {
        NavigationView { ListView() }
        .tabItem {
            Image(systemName: "list.dash")
            Text("List")
        }

の中に既にFormあるエラーと同じエラーが発生しましTabViewNavigationView。クラッシュを回避するには、Formを別のダミーでラップし、でNavigationView画面外に非表示にする必要がありました.padding(.top, -60)。🤷‍♂️
パリモンド

1
これは機能しますが、理想的ではありません。ナビゲーションビューは必要ありません。
Imthath

私のカスタムビューは既にNavigationViewにリストがありました。私がしたことは、カスタムビューからNavigationViewを削除し、上記で指定したとおりに追加しました。その変更後、クラッシュはなくなりました。
Stefan Vasiljevic

@Palimondo -60ではなく-100にすべきだと思います。修正に感謝
PaFi

@Imthath私はあなたに同意
Cagatay
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.