Определение типов @Model
Помечайте классы как сохраняемые модели.
«Определение типов @Model» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Meet SwiftData
SwiftData is Apple's modern way to save app data right on the device. You describe your data once, and it handles storage for you. 💾
The @Model Macro
You turn a plain class into a saved type by adding the @Model macro above it. That one line makes every instance persistable.
@Model
class Task {
}Stored Properties
Every stored property on a @Model class is saved automatically. No extra annotations are needed for basic values like text or numbers.
@Model
class Task {
var title: String
var isDone: Bool
}Models Are Classes
SwiftData models must be classes, not structs. SwiftData tracks them by reference so it can watch changes and save them.
Adding an Initializer
Give your model an init so you can create instances with starting values. This keeps your stored properties set when a task is made.
init(title: String, isDone: Bool = false) {
self.title = title
self.isDone = isDone
}Supported Property Types
SwiftData saves common types out of the box: String, Int, Double, Bool, Date, and Data all just work without setup.
var due: Date
var priority: IntOptional Properties
Mark a value optional when it may be missing. SwiftData stores nil happily, which is great for fields the user has not filled in yet.
var note: String?Unique Constraints
Add @Attribute(.unique) to stop duplicate values for a property. SwiftData will keep that field one-of-a-kind across your store.
@Attribute(.unique) var id: UUIDRelationships Between Models
Models can point to each other with a @Relationship. This links one record to another, like a project owning many tasks.
@Relationship var tasks: [Task]Cascade Deletes
A .cascade delete rule removes related records together. Delete a project and its tasks vanish too, keeping your data tidy.
@Relationship(deleteRule: .cascade)
var tasks: [Task]Ignoring a Property
Use @Transient for values you do not want saved, like a temporary cache. SwiftData skips these when writing to disk.
@Transient var isEditing = falseQuick Check
Quick check on defining models.
Recap: Defining Models
You learned that @Model turns a class into saved data, with normal properties, optionals, unique attributes, and relationships. Your data shape is ready. 🎉
Часто задаваемые вопросы
Урок «Определение типов @Model» бесплатный?
Да — полный текст урока «Определение типов @Model» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.
Чему я научусь в уроке «Определение типов @Model»?
Помечайте классы как сохраняемые модели. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SwiftUI Academy?
Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Определение типов @Model»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SwiftUI Academy?
Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение типов @Model
- Контейнер и контекст модели
- Запросы с @Query
- Добавление, обновление и удаление