Swift Academy · पाठ

SwiftData @Model और ModelContext

@Model मैक्रो से मॉडल परिभाषित करें और ModelContext के माध्यम से CRUD करें।

पाठ 2, कुल 4 में से13 चरण

SwiftData @Model और ModelContext, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

SwiftData का परिचय

SwiftData (iOS 17+) Apple का आधुनिक, Swift-आधारित स्थायित्व ढाँचा है, जो अंदर से Core Data पर बना है।

import SwiftData
// Main concepts: @Model, ModelContainer, ModelContext

@Model मैक्रो

किसी क्लास को स्थायी SwiftData मॉडल बनाने के लिए उस पर @Model एनोटेशन लगाएँ। प्रॉपर्टी अपने-आप संग्रहीत एट्रिब्यूट बन जाती हैं।

@Model
class Item {
  var name: String
  var createdAt: Date
  init(name: String) {
    self.name = name
    self.createdAt = Date()
  }
}

ModelContainer सेटअप

अपने मॉडल प्रकारों के साथ एक ModelContainer बनाएँ और उसे SwiftUI के environment में इंजेक्ट करें।

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView()
    }
    .modelContainer(for: Item.self)
  }
}

व्यू में ModelContext

SwiftUI व्यू में मॉडल संदर्भ तक पहुँचने के लिए @Environment(\.modelContext) का उपयोग करें।

struct AddItemView: View {
  @Environment(\.modelContext) private var context
  func addItem() {
    context.insert(Item(name: "New Item"))
  }
}

डालना और हटाना

मॉडल जोड़ने के लिए context.insert और हटाने के लिए context.delete कॉल करें। परिवर्तन डिफ़ॉल्ट रूप से अपने-आप सहेजे जाते हैं।

let item = Item(name: "Coffee")
context.insert(item)   // add
context.delete(item)   // remove
// Auto-saved on next run loop

प्राप्त करने के लिए @Query

SwiftUI व्यू में @Query अंतर्निहित डेटा बदलने पर अपने-आप डेटा प्राप्त करता है और अपडेट करता है।

struct ItemList: View {
  @Query(sort: \Item.createdAt, order: .reverse) var items: [Item]
  var body: some View {
    List(items) { item in Text(item.name) }
  }
}

प्रेडिकेट से फ़िल्टर करना

परिणामों को घोषणात्मक रूप से फ़िल्टर करने के लिए #Predicate को @Query में पास करें।

@Query(filter: #Predicate<Item> { $0.name.contains("Swift") })
var swiftItems: [Item]

मैन्युअल रूप से सहेजना

परिवर्तनों को कब स्थायी बनाया जाए, इस पर स्पष्ट नियंत्रण चाहिए तो try context.save() कॉल करें।

do {
  try context.save()
} catch {
  print("Save error: \(error)")
}

अनुकूलन के लिए @Attribute

स्थायित्व के व्यवहार को अनुकूलित करने के लिए प्रॉपर्टी पर @Attribute का उपयोग करें, जैसे unique या external storage।

@Model
class User {
  @Attribute(.unique) var email: String
  @Attribute(.externalStorage) var avatar: Data?
  init(email: String) { self.email = email }
}

@Transient प्रॉपर्टी

प्रॉपर्टी को स्थायित्व से बाहर रखने के लिए उन पर @Transient लगाएँ।

@Model
class Session {
  var token: String
  @Transient var isExpired: Bool = false
  init(token: String) { self.token = token }
}

ModelContainer कॉन्फ़िगरेशन

वर्ज़न किए गए मॉडलों के लिए कंटेनर को स्पष्ट स्कीमा और माइग्रेशन योजना के साथ कॉन्फ़िगर करें।

let schema = Schema([Item.self, User.self])
let config = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
let container = try ModelContainer(for: schema, configurations: config)

त्वरित जाँच

कौन-सा SwiftUI प्रॉपर्टी रैपर SwiftData मॉडल को अपने-आप प्राप्त करता है और डेटा बदलने पर व्यू को अपडेट करता है?

पाठ का पुनरावलोकन

क्लास को स्थायी बनाने के लिए उन पर @Model एनोटेशन लगाएँ। ऐप स्तर पर ModelContainer सेट अप करें। @Environment(\.modelContext) के माध्यम से पढ़ें और लिखें। @Query से प्रतिक्रियाशील रूप से डेटा प्राप्त करें। #Predicate से फ़िल्टर करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “SwiftData @Model और ModelContext” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “SwiftData @Model और ModelContext” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“SwiftData @Model और ModelContext” में मैं क्या सीखूँगा?

@Model मैक्रो से मॉडल परिभाषित करें और ModelContext के माध्यम से CRUD करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“SwiftData @Model और ModelContext” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Core Data Stack: NSPersistentContainer सेटअप
  2. SwiftData @Model और ModelContext
  3. संबंध और Fetch Descriptors
  4. हल्के माइग्रेशन और CloudKit सिंक
← Swift Academy पर वापस जाएँ