NavigationSplitView — SwiftUI.AnyNavigationPath.Error.comparisonTypeMismatchIOS

Программируем под IOS
Ответить
Anonymous
 NavigationSplitView — SwiftUI.AnyNavigationPath.Error.comparisonTypeMismatch

Сообщение Anonymous »

Ошибка получения:

Код: Выделить всё

SwiftUI/NavigationColumnState.swift:520: Fatal error: 'try!' expression unexpectedly raised an error: SwiftUI.AnyNavigationPath.Error.comparisonTypeMismatch`
Когда подробное представление NavigationSplitView изменяется и перемещающееся из него подробное представление имеет NavigationStack(path: ...).
Это похоже на ошибку, хотя обычно это происходит, когда я думаю, что сделал что-то глупое. Хотелось бы узнать обходной путь или исправление, если кто-нибудь сможет это понять.
Xcode: Версия 14.3 (14E222b)
Симуляторы: iPad Air (5-го поколения) / My Mac (предназначено для iPad)
Модели

Код: Выделить всё

import SwiftUI

final class AppModel: ObservableObject {
@Published var appNavigation: AppNavigation? = .lists
@Published var listsNavigation: [ListsNavigation] = []
@Published var settingsNavigation: [SettingsNavigation] = []
}

enum AppNavigation {
case lists, settings
}

enum SettingsNavigation {
case settings1, settings2
}

enum ListsNavigation {
case favourites, notes
}
App.swift

Код: Выделить всё

import SwiftUI

@main
struct splittyApp: App {
@StateObject private var model = AppModel()

var body: some Scene {
WindowGroup {
NavigationSplitView {
List(selection: $model.appNavigation) {
NavigationLink(value: AppNavigation.lists) {
Label("Lists", systemImage: "list.clipboard")
}

NavigationLink(value: AppNavigation.settings) {
Label("Settings", systemImage: "gearshape")
}
}
} detail: {
switch model.appNavigation {
case .lists: ListsView()
case .settings: SettingsView()
case .none: Text("Error")
}
}
.environmentObject(model)
}
}
}
*ListsView

Код: Выделить всё

import SwiftUI

struct ListsView: View {
@EnvironmentObject private var model: AppModel

var body: some View {
NavigationStack(path: $model.listsNavigation) {
List {
NavigationLink(value: ListsNavigation.favourites) {
Text("Favourites")
}

NavigationLink(value: ListsNavigation.notes) {
Text("Notes")
}
}
.navigationDestination(for: ListsNavigation.self) { value in
switch value {
case .favourites: Text("Favourites View")
case .notes: Text("Notes View")
}
}
}
}
}
Просмотр настроек

Код: Выделить всё

import SwiftUI

struct SettingsView: View {
@EnvironmentObject private var model: AppModel

var body: some View {
NavigationStack(path: $model.settingsNavigation) {
List {
NavigationLink(value: SettingsNavigation.settings1) {
Text("Settings 1")
}

NavigationLink(value: SettingsNavigation.settings2) {
Text("Settings 2")
}
}
.navigationDestination(for: SettingsNavigation.self) { value in
switch value {
case .settings1: Text("Settings 1")
case .settings2: Text("Setings 2")
}
}
}
}
}
Пример проекта: https://www.dropbox.com/s/jlxct4qeac8kt ... y.zip?dl=0
Шаги для воспроизведения:

[*]Запустите приложение на iPad
[*]Нажмите между основной навигацией приложения (списки/настройки)


Подробнее здесь: https://stackoverflow.com/questions/761 ... pemismatch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»