Что вызывает сбой предварительного условия AttributeGraph при использовании TabView? - PullRequest
0 голосов
/ 03 августа 2020

У меня было приложение с одним представлением, заключенное в NavigationView, где я заполнял данные, полученные из API. Однако мне нужно было добавить раздел профиля с TabView, и иногда, когда я запускаю приложение, прямо при отображении экрана запуска я получаю следующую ошибку (примерно раз в три раза, когда я запускаю / отлаживаю приложение), и приложение вылетает .

Ошибка предварительного условия AttributeGraph: недопустимый тип значения для атрибута: 56028 (ожидаемый PlatformItemList, видел BridgedTableViewState)

Представление, вызывающее ошибку:

TabView {
    
    NavigationView {
        MainView()
    }
    .tabItem { VStack {
        Image(systemName: "list.dash")
        Text("main")
    }
    }
    
    NavigationView {
        ProfileView()
    }
    .tabItem { VStack {
        Image(systemName: "person.crop.circle")
        Text("profile")
    }
    }
}

Я удалил TabView и вид профиля, и приложение работает без каких-либо исключений постоянно, поэтому я подумал, что это проблема с TabView. Я искал документацию по AttributeGraph, PlatformItemList и BridgedTableViewState, но не нашел.

1 Ответ

0 голосов
/ 12 августа 2020

Я потратил много времени на сбои при сбое предварительного условия в приложении с несколькими представлениями вкладок. Есть ли шанс, что одно или несколько из ваших c представлений (ProfileView или MainView) также используют NavigationView? Если так, то, вероятно, проблема. Xcode с радостью позволит вам добавлять NavigationViews в каждое новое представление, но на самом деле SwiftUI должен работать не так. Поскольку каждый TabView обернут в NavView, вам не нужно / использовать NavView внутри этих представлений.

(Также, вероятно, просто cosmeti c, но в приведенном выше фрагменте кода, похоже, дополнительная закрывающая фигурная скобка перед вторым просмотром навигации.)

...