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