Почему SwiftUI Navigation работает только с экземплярами структур и перечислений? Почему не экземпляры класса? ⇐ IOS
-
Гость
Почему SwiftUI Navigation работает только с экземплярами структур и перечислений? Почему не экземпляры класса?
Сейчас я учусь использовать структуру навигации SwiftUI; в частности, реализация программной навигации с использованием NavigationPath и NavigationDestination. Следующий код компилируется и запускается, но не работает. Когда я нажимаю кнопку, мой DogDetailView не помещается в NavigationStack. Однако если я изменю класс «Dog» на структуру, все будет работать нормально.
класс Dog: Hashable { // вещи, необходимые для того, чтобы класс соответствовал Hashable } // с моей точки зрения Button("Информация о собаке") { let myDog = Dog(...) myNavigationPath.append(myDog) } .navigationDestination(for: Dog.self) {собака в DogDetailView(собака) } Я в некоторой степени новичок в Swift и Swiftui, но ничто в документации Apple не говорит мне о том, что параметр, передаваемый в NavigationPath.append(), должен быть экземпляром структуры или перечисления; единственное ограничение заключается в том, что передаваемый параметр соответствует Hashable. При использовании моего класса Dog он действительно соответствовал Hashable, поэтому, естественно, код компилировался нормально. Что мне не хватает?
Сейчас я учусь использовать структуру навигации SwiftUI; в частности, реализация программной навигации с использованием NavigationPath и NavigationDestination. Следующий код компилируется и запускается, но не работает. Когда я нажимаю кнопку, мой DogDetailView не помещается в NavigationStack. Однако если я изменю класс «Dog» на структуру, все будет работать нормально.
класс Dog: Hashable { // вещи, необходимые для того, чтобы класс соответствовал Hashable } // с моей точки зрения Button("Информация о собаке") { let myDog = Dog(...) myNavigationPath.append(myDog) } .navigationDestination(for: Dog.self) {собака в DogDetailView(собака) } Я в некоторой степени новичок в Swift и Swiftui, но ничто в документации Apple не говорит мне о том, что параметр, передаваемый в NavigationPath.append(), должен быть экземпляром структуры или перечисления; единственное ограничение заключается в том, что передаваемый параметр соответствует Hashable. При использовании моего класса Dog он действительно соответствовал Hashable, поэтому, естественно, код компилировался нормально. Что мне не хватает?
Мобильная версия