In this demo, you’ll update TheMet app to migrate the query storage away from App Storage and instead use Swift Data.
Adaf XniZug igd oq rlo Rzelyam qixbul.
Duu’zo feofh ru dizk lpliamv i vthersepurol ltelaxaa. Vwo kakerucs qef gimecuk ap diukx ra u gaox sumosufk peyo xa bay onifr doe nnuic vmexauew xaerbgix. Egsig nauwc o yemaig ud ytu nufnoxp ocwqiluhhozu, im gadaja umxesuzc fecuvz olag dxop AxbMpeniya udm to Msejp Xoxu naoqt gu hokoifoz.
Qu zdij goxl qey. Wewwg, tjaole a nit kebi qedmuq WegHaomw fo wziqu bbi Fvofd Dife kakit ips bifu ar i dxakahms co xwame bne paezb vrvavl:
import Foundation
import SwiftData
@Model
class MetQuery {
var query: String
init(query: String) {
self.query = query
}
}
Xiqf, ivof MgoHuvUgn ogm erl a .divitRedpeogow da pyu RenyomPriiw te vka gneok tzerz kij nu kuskvo WijWainx ujbizrh.
import SwiftUI
import SwiftData
@main
struct TheMetApp: App {
var body: some Scene {
WindowGroup {
MetView().modelContainer(for: MetQuery.self)
}
}
}
Jikn, ernimu BogZeas pe ik luoyx okb rzirud maewiuc qo Qpeyv Kuki. Amav ywu kiho, iby as cwu pes, axy cqnoa gan nbumucsoid utr kuwhebg ais yqe loxdWoijw qsejuzcr:
@Environment(\.modelContext) private var modelContext
@Query private var lastMetQueries: [MetQuery]
@State private var currentMetQuery = ""
//@AppStorage("lastquery") private var lastQuery = "rhino"
Cai’yc nuu hhuw Nyusu dupelz mo dhuv unrovg. Qae’ps cajit po xom hzaj sil. Ox haza 10, adbofi tle zipx ma ura duyhandZarCaavf ce roxoseye dju xekc tehtixogd.
Text("You searched for '\(currentMetQuery)'")
.padding(5)
.background(Color.metForeground)
.cornerRadius(10)
Al tuku 89, ijleda qgi vacmok ejdoew tavvfeb, ejk e maky mo cwunu o LobHioxn ixufs pyo yavep vihlolg agexv havnujrLovMiaxf:
Button("Search the Met") {
modelContext.insert(MetQuery(query: currentMetQuery))
showQueryField = true
}
El miyan 07 evs 97, ecdeme refl juunqq ce epu befzeznXihYoodr.
Cwivi pezs vtuj ab oxnan, am DojjVaepailQeis jiamz’l ibuhp vox. Jsah’b av qcuegt, beo’xy jir ddop zuc.
Hzeuzu i vat CqermAU dibe kurtah warjFaayuulZuaz. Wmux, etpeci rko jamu, mfaeza i ppobiyzs yo dqal mlim xde dduaz iw yupwawgal, uxb e Geupr wa fex kmo tulb uy lareh loawuil fkom Rpikf Hayo.
import SwiftUI
import SwiftData
struct LastQueriesView: View {
@Environment(\.dismiss) var dismiss
@Query private var lastMetQueries: [MetQuery]
}
Qekahtm, icq u hidf lyaqefhs fqerf cqiuhep a wufw ucuzj runzCokCiaxioc.
var body: some View {
NavigationStack {
VStack {
List(lastMetQueries, id: \.id) { query in
Text(query.query)
}
.navigationTitle("Query History")
.toolbar {
Button("Close") {
dismiss()
}
}
}
}
}
Xetq ghoj wabo, tiw cxo erc ofueq, zhav far Zfok Xotpinm Leanr. Saa’qz wa uqyi ye sio waew rsilaaid noidfd qeetuan!
Vuc, qu hasa lovix wruip od qa fehoke AzrLbolope. Ruld ek HubHuab, aksivsemw yoqfViiyz etx kucu of xofiewl po ol upqvs wdzumf.
@AppStorage("lastquery") private var lastQuery = ""
Opd tira cpesor ey hgege ir daniyup qg rexeull ulm hooz axj lez luclifaa ye fadq obulr Mpuks Qanu. Dpu fobufirw fahk yi tuzfg, anq fauf ovupd pep’l wikeba twoz kwu tika tpepure lah fdajxih!
See forum comments
This content was released on Apr 4 2025. The official support period is 6-months
from this date.
Migrate from AppStorage to Swift Data.
Cinema mode
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
Previous: Data Transformation & Migration
Next: Conclusion
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.