SwiftData @Model ja ModelContext
Mallien määrittäminen @Model-makrolla ja CRUD-toimintojen suorittaminen ModelContextilla.
SwiftData @Model ja ModelContext on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
SwiftDatan esittely
SwiftData (iOS 17+) on Applen moderni, Swift-natiivinen pysyväistallennuskehys, joka perustuu taustalla Core Dataan.
import SwiftData
// Main concepts: @Model, ModelContainer, ModelContext@Model-makro
Merkitse luokka @Model-makrolla, jotta siitä tulee pysyvästi tallennettava SwiftData-malli. Ominaisuuksista tulee automaattisesti tallennettavia attribuutteja.
@Model
class Item {
var name: String
var createdAt: Date
init(name: String) {
self.name = name
self.createdAt = Date()
}
}ModelContainerin määritys
Luo ModelContainer mallityypeilläsi ja injektoi se SwiftUI-ympäristöön.
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: Item.self)
}
}ModelContext näkymissä
Käytä @Environment(\.modelContext)-ominaisuuswrapperia mallikontekstin käyttämiseen SwiftUI-näkymässä.
struct AddItemView: View {
@Environment(\.modelContext) private var context
func addItem() {
context.insert(Item(name: "New Item"))
}
}Lisääminen ja poistaminen
Kutsu context.insert-menetelmää mallien lisäämiseksi ja context.delete-menetelmää niiden poistamiseksi. Muutokset tallennetaan oletusarvoisesti automaattisesti.
let item = Item(name: "Coffee")
context.insert(item) // add
context.delete(item) // remove
// Auto-saved on next run loop@Query hakemiseen
SwiftUI-näkymien @Query-ominaisuuswrapper hakee tiedot automaattisesti ja päivittää näkymän taustalla olevien tietojen muuttuessa.
struct ItemList: View {
@Query(sort: \Item.createdAt, order: .reverse) var items: [Item]
var body: some View {
List(items) { item in Text(item.name) }
}
}Suodattaminen predikaateilla
Välitä #Predicate @Query-ominaisuuswrapperille tulosten deklaratiivista suodattamista varten.
@Query(filter: #Predicate<Item> { $0.name.contains("Swift") })
var swiftItems: [Item]Manuaalinen tallennus
Kutsu try context.save(), kun tarvitset täsmällisen hallinnan siihen, milloin muutokset tallennetaan.
do {
try context.save()
} catch {
print("Save error: \(error)")
}@Attribute mukauttamista varten
Käytä ominaisuuksissa @Attribute-makroa pysyväistallennuksen toiminnan mukauttamiseen, esimerkiksi yksilöllisyyden tai ulkoisen tallennuksen määrittämiseen.
@Model
class User {
@Attribute(.unique) var email: String
@Attribute(.externalStorage) var avatar: Data?
init(email: String) { self.email = email }
}@Transient-ominaisuudet
Merkitse ominaisuudet @Transient-makrolla, jotta ne jätetään pysyväistallennuksen ulkopuolelle.
@Model
class Session {
var token: String
@Transient var isExpired: Bool = false
init(token: String) { self.token = token }
}ModelContainerin määritys
Määritä säilö käyttämällä eksplisiittistä skeemaa ja migraatiosuunnitelmaa versioitujen mallien hallintaa varten.
let schema = Schema([Item.self, User.self])
let config = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
let container = try ModelContainer(for: schema, configurations: config)Pikatarkistus
Mikä SwiftUI-ominaisuuswrapper hakee SwiftData-mallit automaattisesti ja päivittää näkymän tietojen muuttuessa?
Oppitunnin kertaus
Merkitse luokat @Model-makrolla, jotta ne voidaan tallentaa pysyvästi. Määritä ModelContainer appitasolla. Lue ja kirjoita dataa @Environment(\.modelContext)-ominaisuuswrapperin kautta. Hae tietoja reaktiivisesti @Query-ominaisuuswrapperilla ja suodata niitä #Predicate-makrolla.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”SwiftData @Model ja ModelContext” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “SwiftData @Model ja ModelContext”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”SwiftData @Model ja ModelContext”?
Mallien määrittäminen @Model-makrolla ja CRUD-toimintojen suorittaminen ModelContextilla. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”SwiftData @Model ja ModelContext”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Core Data -pino: NSPersistentContainerin määritys
- SwiftData @Model ja ModelContext
- Relaatiot ja Fetch Descriptorit
- Kevyet migraatiot ja CloudKit-synkronointi