0Pricing
Swift Academy · درس

مكدس Core Data: إعداد NSPersistentContainer

أعدّوا الحاوية المستمرة والسياق والمنسّق في تطبيق SwiftUI.

مكدس Core Data: إعداد NSPersistentContainer درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

نظرة عامة على Core Data

إن Core Data هو إطار عمل من Apple لإدارة مخططات الكائنات والاستمرارية. وهو يدير SQLite أو مخازن أخرى عبر واجهة برمجة تطبيقات موجهة للكائنات.

import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequest

إنشاء NSPersistentContainer

هيّئوا NSPersistentContainer باستخدام اسم نموذج .xcdatamodeld الخاص بكم، ثم حمّلوا مخازن الاستمرارية.

let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
  if let error { fatalError("Core Data failed: \(error)") }
}

نمط وحدة تحكم الاستمرارية

غلّفوا الحاوية داخل بنية PersistenceController مفردة أو قابلة للحقن، لإتاحة الوصول إليها بوضوح من جميع أنحاء التطبيق.

struct PersistenceController {
  static let shared = PersistenceController()
  let container: NSPersistentContainer
  init() {
    container = NSPersistentContainer(name: "MyModel")
    container.loadPersistentStores { _, error in
      if let error { fatalError("\(error)") }
    }
  }
}

viewContext وbackgroundContext

إن viewContext هو سياق الخيط الرئيسي لواجهة المستخدم. استخدموا newBackgroundContext() للعمليات الثقيلة.

let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()

إنشاء الكائنات المُدارة

أدرجوا كائنات جديدة باستخدام NSEntityDescription.insertNewObject أو مُهيئ الفئة المُنشأ تلقائيًا.

let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()

جلب الكائنات

استخدموا NSFetchRequest للاستعلام عن كائنات Core Data باستخدام predicates وواصفات الفرز.

let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)

حفظ السياق

استدعوا دائمًا context.save() لحفظ التغييرات بشكل دائم. غلّفوا الاستدعاء داخل do-catch في كود الإنتاج.

do {
  try viewCtx.save()
} catch {
  print("Save failed: \(error)")
  viewCtx.rollback()
}

دمج SwiftUI باستخدام @FetchRequest

استخدموا @FetchRequest في عروض SwiftUI لتحديث واجهة المستخدم تلقائيًا عند تغيّر Core Data.

struct ItemList: View {
  @FetchRequest(
    sortDescriptors: [SortDescriptor(\Item.timestamp, order: .reverse)]
  ) var items: FetchedResults<Item>
  var body: some View {
    List(items) { Text($0.timestamp!.formatted()) }
  }
}

حقن viewContext في SwiftUI

مرّروا viewContext عبر بيئة SwiftUI حتى تتمكن العروض من قراءة Core Data والكتابة فيها.

@main
struct MyApp: App {
  let persistence = PersistenceController.shared
  var body: some Scene {
    WindowGroup {
      ContentView()
        .environment(\.managedObjectContext, persistence.container.viewContext)
    }
  }
}

حذف الكائنات

استدعوا context.delete(object) ثم احفظوا التغييرات لإزالة الكائن نهائيًا.

viewCtx.delete(item)
try? viewCtx.save()

مخزن في الذاكرة للاختبار

استخدموا مخزنًا في الذاكرة لتجنب التعامل مع القرص أثناء اختبارات الوحدات.

let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }

تحقق سريع

أي سياق من سياقات NSPersistentContainer ينبغي استخدامه لعمليات قراءة Core Data وكتابتها التي تقودها واجهة المستخدم؟

مراجعة الدرس

أعدّوا Core Data باستخدام NSPersistentContainer، وحمّلوا المخازن، وغلّفوا الحاوية داخل PersistenceController. استخدموا viewContext على الخيط الرئيسي وnewBackgroundContext() للعمل الثقيل. ادمجوا Core Data مع SwiftUI عبر @FetchRequest ومفتاح بيئة سياق الكائنات المُدارة.

الأسئلة الشائعة

هل درس «مكدس Core Data: إعداد NSPersistentContainer» مجاني؟

نعم — نص درس «مكدس Core Data: إعداد NSPersistentContainer» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «مكدس Core Data: إعداد NSPersistentContainer»؟

أعدّوا الحاوية المستمرة والسياق والمنسّق في تطبيق SwiftUI. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «مكدس Core Data: إعداد NSPersistentContainer»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. مكدس Core Data: إعداد NSPersistentContainer
  2. ‏SwiftData @Model وModelContext
  3. العلاقات وواصفات الجلب
  4. الترحيلات الخفيفة والمزامنة مع CloudKit
← العودة إلى Swift Academy