В SwiftData (iOS 17+) @Attribute и @Relationship — это макросы, которые используются для настройки того, как свойства модели сохраняются и связываются. Они заменяют визуальный редактор моделей Core Data декларативным Swift кодом.
Макрос @Attribute контролирует, как отдельное свойство хранится в базе данных. Основные опции:
.unique — запрещает дублирование значений во всех экземплярах.ephemeral — полностью исключает свойство из сохранения.encrypted — хранит значение в защищённом виде@Attribute(.unique) var username: String
@Attribute(.encrypted) var password: String
Макрос @Relationship определяет связи между типами моделей. Он контролирует:
.cascade (автоматически удаляет связанные объекты) или .deny (запрещает удаление, если есть связанные объекты)@Relationship(deleteRule: .cascade, inverse: \Author.books)
var books: [Book]
@Attribute работает со скалярными свойствами и value-типами (строки, числа и т. д.)@Relationship работает со свойствами-моделями (ссылками на другие классы @Model)@Attribute настраивает поведение при хранении; @Relationship настраивает целостность графа и навигацию по немуОба макроса привносят в SwiftData типобезопасную конфигурацию моделей прямо в коде, устраняя необходимость в отдельном файле .xcdatamodeld. Используй @Attribute для тонкой настройки хранения отдельных значений и @Relationship для управления тем, как модели связаны и влияют друг на друга.
Опция @Attribute(.ephemeral) позволяет свойству храниться в базе данных временно во время текущей сессии приложения и автоматически удаляться при завершении приложения.
Новый — ещё не проверен сообществом
Вы