วิธีการดีบั๊ก“ ล้มเหลวก่อนกำหนด” ใน Xcode?


9

ฉันกำลังสร้างแอป SwiftUI บน Xcode 11 แต่จะยกเลิกทันทีเมื่อใดก็ตามที่ฉันเปลี่ยนไปใช้แท็บเฉพาะในแอป

สิ่งที่มันมักจะชี้ไปที่Application Delegateไฟล์ซึ่งฉันคิดว่าไม่ใช่ปัญหา ฉันยังได้รับข้อผิดพลาดนี้ในคอนโซลprecondition failure: invalid input index: 2และนั่นก็ไม่มีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ไฟล์อาร์เรย์หรือฟังก์ชั่นข้อผิดพลาดนี้มาจาก

ป้อนคำอธิบายรูปภาพที่นี่

มีวิธีใดบ้างใน Xcode ที่จะแยกสิ่งที่ทำให้เกิดปัญหานี้?


พิมพ์สิ่งที่แสดงในคอนโซล? ดูเหมือนว่าอาจมีข้อผิดพลาดในช่วงดัชนี ตรวจสอบอาร์เรย์ใด ๆ ที่คุณมีที่ตัวควบคุมมุมมองปลายทางของคุณ หรือเพียงตรวจสอบว่า ViewController ที่คุณกำลังนำทางไปกับ Tab นั้นได้รับการกำหนดค่าเริ่มต้นและในอาร์เรย์ tabController.viewControllers
Alexander

สวัสดี @Alexander สำหรับการเริ่มต้นฉันแน่ใจว่ามุมมองของฉันจะเริ่มต้นได้อย่างถูกต้อง และใช่ฉันยังคิดว่ามันเป็นปัญหาของอาเรย์ แต่ฉันไม่รู้ว่าอาเรย์ไหนในฟังก์ชั่นและในชั้นเรียนใดเพราะมุมมองและการแสดงย่อยนั้นเต็มไปด้วยอาร์เรย์ นั่นเป็นสาเหตุที่ฉันต้องการทราบวิธีการแก้ไขข้อบกพร่องอย่างถูกต้อง ขณะนี้ฉันกำลังพยายามเปลี่ยนหลายสิ่งในรหัสของฉันโดยหวังว่าฉันจะได้รับการแก้ไข (แม้ไม่รู้)
สีเทา

ฉันได้สิ่งนี้ในสถานการณ์ที่คล้ายกันมาก สำหรับฉันแล้วแอปขัดข้องด้วยข้อผิดพลาดเดียวกันและคอนโซลเอาต์พุตดีบัก ดูเหมือนจะเป็นความล้มเหลวของเงื่อนไข C ++ (ดังนั้นภายใน Swift เอง - ดังนั้นโดยเบรกพอยต์ไม่ทำงาน) สำหรับฉันมันเกิดขึ้นเมื่อพยายามเข้าถึงขนาดของ GeometryProxy
Daniel Thorpe

เหมือนกันที่นี่ - เข้าถึงขนาดของ GeometryProxy เพื่อคัดลอกลงใน@Binding
Grimxn

เกิดขึ้นกับฉันไป การเรียกครั้งต่อไปในสแต็กคือ GeometryProxy.size.getter () แต่จะเกิดขึ้นกับฉันได้เฉพาะเมื่อฉันเข้าถึงแท็บ SwiftUI ตามลำดับที่แน่นอน GeometryReader ใช้เฉพาะในแท็บที่ทำให้เกิดการขัดข้อง (Crash จะเกิดขึ้นหากเข้าถึงแท็บนั้นได้เท่านั้น)
tarasis

คำตอบ:


10

ฉันมี TabView ที่มีมุมมองที่ใช้รายการ เมื่อสลับแท็บแอปของฉันทำงานล้มเหลวโดยมีข้อผิดพลาดที่คล้ายกัน: "ล้มเหลวก่อนกำหนด: คุณลักษณะล้มเหลวในการตั้งค่าเริ่มต้น: 99" สิ่งนี้ล้มเหลว:

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

การตัด ListView ใน NavigationView แก้ไขข้อผิดพลาด ผมเห็นการใช้งานนี้ของ NavigationView ที่ "สวิฟท์สด - 007 SwiftUI TabView && รายการ" โดยคาเล็บเวลส์ 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ภายในที่มีอยู่แล้วภายในTabView NavigationViewเพื่อหลีกเลี่ยงความผิดพลาดของผมต้องห่อFormในหุ่นอื่นและซ่อนมันปิดหน้าจอด้วยNavigationView .padding(.top, -60)🤷‍♂️
Palimondo

1
ใช้งานได้ แต่ไม่เหมาะ ฉันไม่ต้องการมุมมองการนำทาง
Imthath

มุมมองที่กำหนดเองของฉันมีรายการอยู่ใน NavigationView แล้ว สิ่งที่ฉันทำคือฉันลบ NavigationView ออกจาก Custom View ของฉันและเพิ่มตามที่คุณระบุไว้ด้านบน หลังจากการเปลี่ยนแปลงนั้นความผิดพลาดก็หายไป
Stefan Vasiljevic

@Palimondo ฉันคิดว่ามันควรจะเป็น -100 และไม่ใช่ -60 ขอบคุณสำหรับการแก้ไข
PaFi

@Imthath ฉันเห็นด้วยกับคุณ
Cagatay
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.