0Pricing
SwiftUI Academy · درس

تعريف أنواع @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: Int

Optional 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: UUID

Relationships 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 = false

Quick 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف أنواع @Model
  2. حاوية النموذج والسياق
  3. الاستعلام باستخدام @Query
  4. الإدراج والتحديث والحذف
← العودة إلى SwiftUI Academy