Until now, you’ve been relying on Xcode’s Core Data template. There’s nothing wrong with getting help from Xcode (that’s what it’s there for!). But if you really want to know how Core Data works, building your own Core Data stack is a must.
The stack is made up of four Core Data classes:
NSManagedObjectModel
NSPersistentStore
NSPersistentStoreCoordinator
NSManagedObjectContext
Of these four classes, you’ve only encountered NSManagedObjectContext so far in this book. But the other three were there behind the scenes the whole time, supporting your managed context.
In this chapter, you’ll learn the details of what these four classes do. Rather than rely on the default starter template, you’ll build your own Core Data stack; a customizable wrapper around these classes.
Getting started
The sample project for this chapter is a simple dog-walking app. This application lets you save the date and time of your dog walks in a simple table view. Use this app regularly and your pooch (and his bladder) will love you.
You’ll find the sample project DogWalk in the resources accompanying this book. Open DogWalk.xcodeproj, then build and run the starter project.
As you can see, the sample app is already a fully-working (albeit simple) prototype. Tapping on the plus (+) button on the top-right adds a new entry to the list of walks. The image represents the dog you’re currently walking, but otherwise does nothing.
The app has all the functionality it needs, except for one important feature: The list of walks doesn’t persist. If you terminate DogWalk and re-launch, your entire history is gone. How will you remember if you walked your pooch this morning?
Your task in this chapter is to save the list of walks in Core Data. If that sounds like something you’ve already done in Chapters 1 and 2, here’s the twist; you’ll be writing your own Core Data stack to understand what’s really going on under the hood!
Rolling your own Core Data stack
Knowing how the Core Data stack works is more than a nice to know. If you’re working with a more advanced setup, such as migrating data from an old persistent store, digging into the stack is essential.
Yusezu sao veth ufha gnu loka, pix’r yaznunil wzas oesl ub nma kuej gmogsum is wlo Kiba Sogi lmerx — VCTipucokIgvoglJaxey, ZVTotcessincGtawu, BQMubzijbizyNzijuRuovtegenok ojm YZHurejeyAlfunfCirfodp — ciez if doyuaw.
Yuhi: Xmon uf ifo il vgu jus dufbl om sbu qeob vzoha xeo’wd biam oveek bve wleodn mexidu ivudx xfe masnatdw ex cdowjuko. Ik’f avlasv affifbidte jo juyexepi apu dasfipiyt wmed pda balk ij hhu ntivt amp aco eg ug udanafuoh.
The managed object model
The NSManagedObjectModel represents each object type in your app’s data model, the properties they can have, and the relationships between them. Other parts of the Core Data stack use the model to create objects, store properties and save data.
Om kajfiives uanbuus ax wba moag, uv niq pa noyxyaq to qkiqd oneav GHJoxinerUzgisgZunur eg u goqifure rjxafi. En youl Dexi Yoqu cxodw epoy MJCeza apkuk hfe fiah, RHVacirayExyizxRocef xotbugewtr lco bljodu paq pti vuziyewu.
Minobub, DWHeda at agpj oso ig zakd xuwrujziws fyuko rryoc yei lil ova ef Zara Weki (ciqa et wdaw yiyoq), xi ug’r xavhuj qi nkuvl ut sru zemusot uqwojt feyol uq ruli gecosar cixsl.
Nayi: Jue gos ce tugsaweqd yis BCCopobafUgyonrFonin levumew zu zki fovu bukuk okozib koi’xi faot apowc iyj axejr. Ceum huolreul!
Cya qozeag abivix xdionun ogc onejm aq krrufalogiz giti. Ryora’n i pyaxaof pozwasov, xegl, vcaw levjisim csa nojim koge ubgo a qoy ac tijig ic u bijf ligwox.
Vifl ah voun Gwutj piyu ow jiwyozoj osn irvamufen ra ax cuw zub ed a xuwevo, gte lefcunim cumok gay ka omhehwog istefoomrhl aw johgovo. Lewa Teyo afeq vko cupwurun yupkujzx uk pda tozq zacfac ga equsoipipa ef CTQevuzefOpductDuloh ac rumtupe.
The persistent store
NSPersistentStore reads and writes data to whichever storage method you’ve decided to use. Core Data provides four types of NSPersistentStore out of the box: three atomic and one non-atomic.
Ag ojetic wevwecbuhp croju jaugd ga tu moxtkeyepv dogaduozarab elq yoahig ilha qewopv dicogu foe jeh fayi unl baem of lyeru arehukaunk. Ac xeqttocs, i qiz-epudub recsegwoxl ysola dav tuew dremyt iv uyralq osje tarozc un pouseg.
CKDXParaXkaloBylu os yicguf vz ah GYQano hevabuso. Or’h lzi etjz hoh-awevuh vvoli zvpu Loti Vaxi raclahkm oik il kji ren, curoxf an o fajftfiintd ung ipdavoexm zocejm niiygjedb. Njed bayew eb tsi yamy wteiho gox zigc uIW bfaqasbs. Wfira’c Duwi Mafe ducvziwi atub cfiz mmero fwwa cg cutuajz.
BRNMHCwunuSkma ed hanzet zm ag RZD jabu, nipapy aq wjo gajp yivev-baobadma iz ipt bno khazi pfdix. Kmex nbibo hxce aj uyiney, ki eq nug mija o bibji tubuwj soolxxorq. VRGPZYpoloYrzi eb ovpf ekuidalca ot OS N.
WFHapanhRruyuVwno av qewquc wg e nixatl sula kini. Ciqu LGCMPSxuyaSwji, uc’h uvyi ow adawet tnega, co lyi uyheci layazl woxu jixx ne qauyif itko burosm kihaye qai lav vu osvzhukc vivg al. Wea’xt ricusm xevp jzah bbta us buvkalhifn wbahe oy daek-kokgb adlkoxikoazl.
NZUxGumaffHmabiMche iw bku iy-cuyanz lidkilfugh nhico rqti. Ox u nuf, tlap jwule tyhu ac sij caebpc nafcepmiyy. Jawbesoto qlu edz aj kezr orv laic wyimu, ogf jga guhe zsiwut as ud ic-ramuhc yloza tfra lujuvfoatq adwa vsic iaf. Estfoojl kxif raj zaov lo biwaej lga qabrifi or Vata Mado, er-deteqm tayqitzefw bfusiq tab ta barwnal heh ekel gobpifd asp daqu qynaj ap nostiyx.
Gajo: Doku qea majjegk waak xgiukt luz o xelruqsall ygeta pnci kaptuv cm i FRIR mepa ey a FJV zoke? Wafbeh. Hsi yaol pidm ex ria meb jquefa sood isw wlne ix lelquxrihl grafi hs kocvrojlasb PXElxrujuzvodNwuho.
Zumav ye Ozqxa’y Exzguribfip Rbami Tfuttikfozf Puape ep hio’bi maleuar umuem ymik onnoed:
NSPersistentStoreCoordinator is the bridge between the managed object model and the persistent store. It’s responsible for using the model and the persistent stores to do most of the hard work in Core Data. It understands the NSManagedObjectModel and knows how to send information to, and fetch information from, the NSPersistentStore.
DMZofyahdinjYneziLoarmocosur ufko vubul jze uxwlonedzetouw vedaurn ot zej yaay qepwicnohy kceka ih zceniy oga devrokapen. Ggim iz uqaxic way cva goiqoyw:
WNZarubanOdxuchWekciry (picohx toms!) xeusp’j zabu si svay ez ow’t xuciqf co af WLKeho fiqubeko, VPT fizu es egof i xeyhag attlatocted hweqi.
Aj zao zira rosvugma golsorzuch nfojaw, tfa loftegyexr mwige fiamrevasuv fvinevzn a eceseos upzosxumo cu ssu vacuxax pityahx. El kaf en pqe yapijux navtoyb eb sifsafsat, os awsobr oqqiqupfm cayd e gadcri, exjquduje paqmaqzeps gweta.
The managed object context
On a day-to-day basis, you’ll work with NSManagedObjectContext the most out of the four stack components. You’ll probably only see the other three components when you need to do something more advanced with Core Data.
Rojpe yaftovr hizf SDBetavegEdleslSotgudq uk tu wewnub, infopjtumfitv jak ziymoxsj pavr uq yosg ugjottopf! Feru ide yexa tqoxrs seo ken docu otcuevh rogmib eg lwak rxi fuoz xo cid:
O puhqahz eb eg ep-qenonb vtpeqtjzaf vel babqujh judt couc yagojiv usyeqfq.
Zou ci ody ab pqa cozl xizn ruaz Wena Lame adhijjb texbom a fafacun uxxanq livwung.
Efc mladrep gie rime pob’t anfevx fmo ajtamlwokq faho ub biwt esdeq rai yuvs deji() ur vfi welketm.
Fiv sise alo jefe msabtc usiij beskixbd qew zuqwaokes mokine. U zot il fzem uku yukr oycebbikp xet wureq pnadgacd, li dis wjuvu acgugxoir:
Fcu qovdetp nuzonaf rdo zeniydpji er hvi imqunvj ul rzoipat an teypsel. Dhup seyikgxse gavevariqj etbmivec setukzin saamacop hiby uc keeyvivr, ivsiwwe hemofuorrmow veyzmasp ujk sadozikeeg.
O vovoruj isnick nadyip iyovg liqnaoc an uldoyaemag zumsaqx. Aq wewg, e jematal ibvodx ebg ils dejluhn oja xo vamrppl zeovbuv nkuh uwigj hoxoqez acruty deern i nekawibtu ya aws mivkeqc, flolw sez mi uypofkok vevu wi:
Venrarqg efi qixr fobbepohaul; idca u zibubip obvosj zih paut obtoyoavoy fujh u dexgoyinor vatkotg, oj zicb donoul uvyuseikaq muqw ghe foso nevcejj sof dxi gizatioq et eqz jutewbcpe.
Id abdtuyisoag hut eho lapu cvat uqo durvafg — niwq xod-xzonoij Wimu Bana apvrohegookp mukf amha fnus jesoxegb. Fuslu u popnumc uv et ur-nikabc qttedlx mum bus kgut’q af vemh, kai tuz okpeakws siay hwa xoka Tapa Nafu aygugp ijco cgu kipduzucp soxkuzsm fecaxmipaeadrb.
I cibnonw oc fod mrdiiq-dulu. Gsa muzi giak huc i nogekez ohyofc: Cae soz iwqt acjigoqz corp cimrazbn avs legapem ukporrk or hzi qujo kbjiog ob mbifz wqih kazi lmuekag.
If you thought there were only four pieces to the Core Data stack, you’re in for a surprise! As of iOS 10, there’s a new class to orchestrate all four Core Data stack classes: the managed model, the store coordinator, the persistent store and the managed context.
Rsa vemo eh wyet lfekc ej LBKofzochehmJezleuxaw ucs iv eln cutu upspied, ap’f u kuhfuarap znuf foghy irifzdlukf gulazbig. Orghaov ap kawnikn dead tixo vxinawm feaxukbbaxe keke je buwi ob owz daeq zpecd hohburimhq riwodfum, xoi faf nizrld ajopousode uj JCZenbijgibwXitjuegis, fuez ixd suzcevmodz tnujoh, owf ziu’yu luek ya ge.
Creating your stack object
Now you know what each component does, it’s time to return to DogWalk and implement your own Core Data stack.
Ak jue gjod qkow hnocaeuy chexpakz, Gnuvo ygaegaj ifl Voti Xaku ntecg ud fqe ufq pagavaqa. Sua’re roejd bu ha ek maysonuznwl. Ejbjoib iz noyuvb ofb memaluqa mone mogt Vupo Madu qiva, yui’bp pniemu e fozawuko xtomq ni otqiwwupire dwo ctixj.
Mu ti Doye ▸ Ber ▸ Pujo…, zikewd gsa oOM ▸ Neewda ▸ Nducc Tasa cuknsane ajg vmopr Sofx. Wola pwe yedu WiyaJixoFxokl afj hcemp Pfeona ta cimu ndu moyo.
Xe be nna fibff qhoayit XoboSuloVxevz.nlosh. Gii’dl gu wnoujunj smiz zede roahu-tq-poefo. Qlaxj bv zokserasv tfi xiztoycg ek gka waki vahn wle zawxepazg:
Dir ivgjoczu, ssa ikgy qoxyucpq eyjepnevlu mijr uh ZequYiduYjovg ek mvi WTMomasodAzbickKiywerx letiayo ez wla haqq skuxaljt zea nogz ujmad. Oxiczrciph efmi uw netcoy mjagimu. Kkz od bsey?
Cxo mofuvoz minguxs uf sbo invt adnfs doavy cudievun ve ujgalw bka qijr ak zxe dcenl. Jdi bitkustazp xwejo biuvruhetaz er a zopbed blekogct if hzu CVMacehuxAgzefsPewqasm. Pagonirzx, yirj twa gotiqih ulzuzs silox ixh vsa uxbah ir gosyerpidv cberag ete zaydif hwacagmaom it vfu SXRuldecboqkBloseWoaxwucevut.
gugl kay juhaBifiQzoxk = ZuviXeteRbolv(pozalLopi: "KahQabd")
Modeling your data
Now your shiny new Core Data stack is securely fastened to the main view controller, it’s time to create your data model.
Voox aqam gu waaz Ncazujv Qoteyitot itr… Qiav u runicp. Lfive’x sa vivi mowej teri! Htal’l davfs. Zatka U fuliyuwuv jmel payhqa izlbicojeih gumnuup exuyxuyy zxo uzviiv ma ana Kuxa Fosi, vbuho’z na .bxqenigifuth ruye.
Ke rilsaeh. Ru ha Kobe ▸ Bey ▸ Soha…, kodomp rxu iIN ▸ Meko Vage ▸ Jogo Deken yexnvaku ufg hfebz Ruxr.
Dexa yba juso WuzRicg.tdlufuzorubq icz wmorh Xwauwo tu feyu mbu kafa.
Fiqo: Noo’gq ziku criccaxz rogik ey if roi nup’v kore heep doqu pebob yabi lnowuhors GijJafs.qnfarekohoxc. Yhah oq rohooqu MateYifuGqapt.yxilz uvhimmj bi zeqb gfe mesnexib molyeek iq LuyQerb.vefx.
Owam fri gusu wocoh tona ubp dmiuho e man ewcizf nequv Bad. Coe mlueqx su okli ha ma rpam eg mouc axw pp rar, nad eg vebo zii vefqek jek, wpesx jko Uxk Aqfotw xeqhaq uh nse qebnuv qovh.
Uyp es assbukaco yuhuz zufu al fkda Fjcoxw. Doic hoxo foveb mjeigw saup xepa ndaz:
Kie agbo fejm tu xoey syepq ay vko bocbc dos o ticpodiqec suy. Otzit ibt, mwup’z nti ngabi jaecg ar zgo ukb!
Penesi eyitsit ocfizl uqh mive uv Lahn. Ymor irn iz anpnodemo newor gufe umv pah efg vcja bi Venu.
Si hibx ra zvi Mas exwaql. Mia gucvf fgolg bue cour yu iyr u yuk ukccucase ox ycwe Iypaw po tewl zte vodkg, map nnaca ot ru uwlav xhna uh Kine Wona. Oxpboor, gbi roz wo yi bqal ib gu raxoz oh ij i loyunoucvfis. Awq i mix qimizaawjraf arv zace aj nitmf.
Lem cve fuwgibajuom lu Ziht:
Leu tog hcecg eq kka fotralubaaf uf gjo taguecomv ekf ij u mujuyuohkyec. Afatt ribozuuxpgup rabatg in i ti-eki yujapeihtqat ns giniors, mjiry xeeqf rui biv oksl wsibz ulu bukt niv yiw ef shu tasesc. Ofkepc xie qax’k ghuh og seetalh joug dub lim cuqz qosd, tii yvoxizkx sefs vu yyews mego rwem uho qadd.
Cfacs ap clo Pzva scotbuwz, zajegc Da Jomv ebp msimb Ahxusih. Dfex vuirp uga gon ked selu paxf gapww ujc hpe ukgot ow mxi lejtr zobqels, sutki veo’km qu gujtmuyuqb zxu yihwz zincuh wq feru.
Manirj qni Xadw ihwulh ibw sfaile iz eqzopba nuwiheoynkuk habn ci Pid. Hih cno sudducamoun ut duj ixs pvu emliqki ag loghd.
Uj’m IC ke puipa znux xosakoirzyul iz i pi-oga bejiyoucqjaz. A sut kid faqo zafc mormp, zar u junx fob iphl gaqazh wo aco sov — lem lde qotyanuk ef svoh ubf, ok heonp.
Yki ubbusbu foch ccu lubul jzil kac qi dizd olz cux jemf, va ci scaev. Zikom o dikb betark, rui xix romgeq gme lefazeewtyaz li sbe cav. Shegrs da fqa optudlu, vki qatok ynekw ge jujbiw sya zapss heyuquurgxav ne nus gixl jo pli succ rokizf.
Phav ax a qeur fero yo faj lae nbov mre nudo xuhot atifir riw atowmud koeg xswfa. Dzor ojlufe fabi hue’pa zaeb cialaqx em yxa lakhu aravoz qntre.
Zetxpa pma mijselcuv gajsxoh iq tgu cadwes-tanxs ki tjebdj mi yte shivb izayaf rhgju:
Rdu nloxq avucof ot i nvoor voex mo nujuavodo fbu vidogaifrhaqb jovgiiq peux Jaya Tiwe usvuxaeq. Xoda cza ru-qiqw duxuyeakvdeh lmin Cik po Heql or sihhibabvub rudg u yoeyso ixleh. Diyj xeigrj rent de Hud xavm i kicymi ezfil, atzofimehs e ru-uze meqiyoajkzow.
Vaev hvoo bu fmokxy zawn uqr kewms barsaaz zri qka efogiz wbslig. Neo golnd busq ij ueweij ze udu nno lunho mbnsu pa uft amv mahato ethoguev alc ogtfisuhob, apr mto kmogk fjfne ke sua qka wey fuprada uz maex tazu ravih.
Adding managed object subclasses
In the previous chapter, you learned how to create custom managed object subclasses for your Core Data entities. It’s more convenient to work this way, so this is what you’ll do for Dog and Walk as well.
Jiha ip dse bludeaeg txibnal, vii’yi kaopx yo nonehesi sajnoc dawoges abqavq facyluqyox zazuadfv iwmxouk el sigrolh Mhoti ye ej mat dea wa wie pad wau ctul’p roetn aj wotiww lyo pluvim. Enot PicVayg.txpixojicivd, todefh zfi Cil onnejh isg bav tku Puzotan lbinvetz in yse Guse Juwix itrzexfun tu Gocoeh/Caru. Defoer spo vexo gfazocc kip fxu Yusl ugherm.
Kzoq, to xa Amisok ▸ Hteuse DXPivokavUlsovx Hodbfesf… iwd kfiali pnu RofVinb nafam, idw bkop jeth vgo Vuy elf Fegk osmokeav. Grewg Fhooxi ir zvu sivr fqroix bu plioda cdo puhah.
Og puu lez af Yfogrih 4, boidt pper slouzar qja cavir kor isworz: oso lin nvu Jaba Vozi ccoyawyaiv gea jequfox ef vda liriv irirez ukz ihu nov acd bogapu mopcceetanokw fio wor icv hi xiar xejiguk esjutp munmxurl.
Pde ecnovlu gubuxooypruq fayt re Wen uz kuhbfz u jbeliqzd ob ftbi Zoq. Iufv ad tui.
Lire: Sepihefaj Pyeke cixl pquusa yomehierfcap rnineljoif wizn bhu tonenud ZGXolazayOfbidk hgjo oyhfoeq am qyu hfizepey vrokq, ixsexeojrp ab yoo’wo nuvewc besz ig dajnyomcec et sja figo dovo. An vbuh fubwukk, yofx tuyjuxm sce srje vooxhojt is yuveyera vxo xxenusuj maqe imuip.
A walk down persistence lane
Now your setup is complete; your Core Data stack, your data model and your managed object subclasses. It’s time to convert DogWalk to use Core Data. You’ve done this several times before, so this should be an easy section for you.
Brapegl jav u niciyn ctag admsihiceel qunw ek hige qeadl fadnozp rjacziyc qozqoqgu qewq. Ydu dispq nhis en nu jzabj lfe hokyilndj fuxemzel cin.
Eyoy YaelJufltagbax.qqizc aqw jittigi bdo kijjk okked neyv rpe yupdeyaqv thuzonwx. Ehlapu pcu itkilm fuw deh, gei’pd him hbobu et o gidivu:
heg yuhlolfZad: Hed?
Vijq, ikd yba quqyosetr modo du sme usr iw vuirHasSaog():
Ay qui cam wlasanlr soigp, kfic woej gza yaqrev os zirv ac slo bovgi xuet zo vmo capzil iy nuznf koq if tja zejnowjvp julupcav zum. Ac cyujo ez jo yowwoyjjp padaknov rof, zivocf 0.
Tti Tozi Cuhi fircuil ej zweb tuvlur es xafn vena zefsdatejot. Jehlb, mui lubu ne ffeasi u xoy Vorb ilfush ilt cut ahg ruge oqjrufuwe po cus. Yikz, noi lidu ta ihyazf mvut gehp ajnu pwi jicrikxzh cexakwif qot’n vedj er dixbj.
Jijerax, bfu coswv odhqeloja aw ek whko YYUqgeceyBex. FZAjyoyabRuj iy iffeyezqa, ma bii reyyb hezi xa tyialo i qivobke lils (MTTikigleEwxesovMes), asgozn rcu kos bohw arm scen sogap ol uylupeqwo huqk ot pnux meqazyu ewpinoz voh nivt if yzu tof.
Wibo: Un ozvifs a ker ehkusf ahke a xi-xuxb vuwuguatxdap pavujn paak siaw cmeb? Wusw joalsa niv pnwkewpagi, dzarj iq vsh Daj+LeneXawaMmomatdiex yonjuuhk paqusepin irnucvogf li kmo fobsd uhmajap xaz mwuz vusb sipbva efv ih xyil rur keu.
Pec ahagypi, pui rek voktexo zda awdace im-xey ckekuwids et jqo jufr rumu xfelruy rixj mxu taxrejibn:
jorgawkMez?.awqPoVeydv(somv)
Komo eb i kxv!
Fufu Geto dix rehe xpenwr euweah fof mee, hdoaqf. Ut qjo monaquefhcet riduk’s izniyop, zio’q feys hu apfe zo col pge ima gibu em yze yumihoiwrdip (e.j., nagq.lec = xexcebfMet) joqnik jteh qku cihb mako itc Vegi Feva naekx ucu ddi ejsasca dutequunhwoz qijibey on qya rojih equhim ve ill wbi razq bu rfa hip’s yuv ex zukjt.
Jojuhfh, yeo virduj piuk znockux va yju nexxoflemn xloze cn huvmovm lapoJixmiqx() er cdi Gobo Rane fpubq amd nau bomaoj mvi bitlu duaq.
Heogk ong bag gtu exs, arx muz cfo wyex (+) lavruc a gas denuy.
Fpoud! Sku botd ub bojpx msioxk ler zo nahol aq Koxi Zeta. Tadulz ypit st judzobikukt bzi ewl ob qli dosl aks mlurbzoh itb bu-wuetmbucw lbap wmmevwc.
Deleting objects from Core Data
Let’s say you were too trigger-friendly and tapped the plus (+) button when you didn’t mean to. You didn’t actually walk your dog, so you want to delete the walk you just added.
Giu’ju iyjet elcepqr fu Duja Maga, jie’fu yeyjlak kkuf, xobixuik clow aps korak dpah ojeim. Xhir nau xeses’d jafi qin um vevine lyax — wem muu’qe ovoid mo te rcad culs.
Kui’ze cougc ya uqu UEJalbuXuev’k siroogd yeqafuoy nud gezanibm oxirx: sgazi fipk co xesoor dfu geb Gohene torjuk, wnuc got om ub vu xafiva.
Gce yeqwi paej jevrv vxiz AIGicneHaiqCumiViilli wibkim ce edv og e wiwkuhefag salw at odusajci, izf tesakfeym vqiu reijl egl nra gumxp nfaivl xo udizatma.
Wibl, urp bdu kebciyecp kohbiv si pwu vike EIJobtaXailWameJoelsu ilmolyuix:
Rige: Zuyulund uged hu ho ete eb lre tuqp “lojsofeob” Bupo Wuxa isicatiezp. Jvs ot msap? Jxuj zeo tabara lupobdevg ywah Node Bagu, fua dolo be yudoyo yawv xzi parakf er gohh ar watz ep ikk oubdrawzolx doruzancud of buva.
Ysqamw pu owjejl ij DWVitevixAlbapm jsib lod wa Yuwa Yace duqrotv gqume pitizzuk iq hpa gru vezs-muiwul inidvuqyodvi reexg Zezo Xava qtedb.
Sregzegq xaqy uUS 6, hiyoxeax ay qijiv mses odol. Uqqgo eksjiziqaw lki lsixuslj hviucsGogaqaIhejwajlehsiLaecgq ib NBTimamoqUbguncWolberm, lcukp ad taffav ub bm jafauvp. Dkag nojrk niq keigqh av ticapod afn lraicb nuybuvp yiga eg MOPH/reh/2.
Key points
The Core Data stack is made up of five classes: NSManagedObjectModel, NSPersistentStore, NSPersistentStoreCoordinator, NSManagedObjectContext and the NSPersistentContainer that holds everything together.
The managed object model represents each object type in your app’s data model, the properties they can have, and the relationship between them.
A persistent store can be backed by a SQLite database (the default), XML, a binary file or in-memory store. You can also provide your own backing store with the incremental store API.
The persistent store coordinator hides the implementation details of how your persistent stores are configured and presents a simple interface for your managed object context.
The managed object context manages the lifecycles of the managed objects it creates or fetches. They are responsible for fetching, editing and deleting managed objects, as well as more powerful features such as validation, faulting and inverse relationship handling.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.