Як налагодити помилку «передумови» в Xcode?


9

Я будую додаток SwiftUI на Xcode 11, але закінчується негайно, коли я переходжу на певну вкладку в додатку.

Річ у тому, що вона завжди вказує на Application Delegateфайл, що, на мою думку, насправді не є проблемою. Я також отримую цю помилку в консолі, precondition failure: invalid input index: 2і це все, більше додаткових деталей щодо файлу, масиву чи функції ця помилка не надходить.

введіть тут опис зображення

Чи є в Xcode спосіб виділити, що викликає цю проблему?


Роздрукувати те, що відображається на консолі? Схоже, може бути помилка індексу поза діапазоном. Перевірте будь-які масиви, які можуть бути у вашого контролера подання пункту призначення. Або просто переконайтеся, що той ViewController, який ви переходите за допомогою вкладки, ініціалізований та в масиві tabController.viewControllers.
Олександр

Привіт @ Александер, для ініціалізації я впевнений, що мої погляди ініціалізовані належним чином. Так, я також думаю, що це проблема масиву, але я не знаю, який масив, в якій функції та в якому класі, тому що цей вид і його підгляди заповнені масивами. Ось чому я хочу знати, як правильно налагоджувати. Наразі я намагаюся змінити багато речей у своєму коді, сподіваючись, що я потрапив у виправлення (навіть несвідомо).
сірий

Я отримую це, у дуже подібній ситуації. Для мене додаток виходить із тієї ж помилки та виводить конфігурацію налагодження. Це, здається, є передумовою C ++ (тому в самому Swift - отже, точка розриву не працює). Для мене це відбувається при спробі отримати доступ до розміру GeometryProxy.
Даніель Торп

Те саме тут - доступ до розміру GeometryProxy, щоб скопіювати в@Binding
Grimxn

Зі мною трапляється. Наступний виклик у стеці - це GeometryProxy.size.getter (), проте для мене це відбувається лише в тому випадку, якщо я отримую доступ до вкладок SwiftUI у певному порядку. GeometryReader використовується лише у вкладці, яка викликає збій, (Збій виникає лише у тому випадку, якщо до цієї вкладки можна отримати доступ третьою).
тарасис

Відповіді:


10

У мене був TabView, що містить представлення, яке використовувало Список. Під час перемикання вкладок у моєму додатку сталася помилка з аналогічною помилкою: "попередня умова збою: атрибут не встановив початкове значення: 99".

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

Обгортання ListView у NavigationView виправило збій. Я бачив це використання NavigationView у "Swift Live - 007 SwiftUI TabView && List" від Caleb Wells . 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). 🤷‍♂️
Палімондо

1
це працює, але це не ідеально. Я не хочу перегляду навігації.
Імфат

У моєму власному представленні вже був список у NavigationView Що я зробив, це я видалив NavigationView зі свого власного перегляду та додав його, як ви вказали вище. Після цієї зміни аварія пішла.
Стефан Василевич

@Palimondo Я думаю, що це має бути -100, а не -60. дякую за виправлення
PaFi

@Imthath Я згоден з вами
Cagatay
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.