В чем разница между @Observable
и соответствием Observable
? Являются ли они функционально эквивалентными?
@Observable class MyClass { ... }
class MyClass: Observable { ... }
@JoakimDanielson Почему вам следует использовать первое?
Поскольку с помощью макроса Swift будет наблюдать за каждым создаваемым вами объектом, во втором случае вы только соответствуете протоколу, но во время выполнения с вашими объектами ничего делаться не будет.
Это большая тема, которая также является одной из основных концепций Swift, поэтому вам необходимо правильно ее понимать, чтобы использовать SwiftUI. Поэтому я предлагаю вместо того, чтобы полагаться на ответ SO, изучить его. Apple предоставила для этого множество ресурсов. Например: это , это и это
@Observable
— макрос, Observable
— протокол.
Соответствие этому протоколу сигнализирует другим API о том, что тип поддерживает наблюдение. Однако применение протокола Observable к типу само по себе не добавляет к типу функциональности наблюдения.
Этот макрос добавляет поддержку наблюдения к пользовательскому типу и соответствует типу протоколу Observable.
См. также: Миграция с протокола Observable Object на макрос Observable
Я не понимаю, какое отношение ваш код имеет к SwiftData, но обычно вам следует использовать предыдущий пример кода.