You’ve set up the data model and given the app the ability to save new locations to the data store. Next, you’ll show these saved locations in a table view in the second tab.
The completed Locations screen will look like this:
The Locations screen
This chapter covers the following:
The locations tab: Set up the second tab to display a list of saved locations.
Create a custom table view cell subclass: Create a custom table view cell subclass to handle displaying location information.
Edit locations: Add functionality to allow editing of items in the locations list.
Use NSFetchedResultsController: How do you use NSFetchedResultsController to fetch data from your Core Data store?
Delete Locations: Add the ability to the UI to delete locations, thus removing them from the Core Data store as well.
Table view sections: Use built-in Core Data functionality to add the ability to display separate sections based on the location category.
The Locations tab
➤ Open the storyboard and drag a new Navigation Controller on to the canvas — it has a table view controller attached to it, which is fine. You’ll use that in a second.
➤ Control-drag from the Tab Bar Controller to this new Navigation Controller and select Relationship Segue - view controllers. This adds the navigation controller to the tab bar.
➤ The Navigation Controller now has a Tab Bar Item that is named “Item”. Rename it to Locations.
➤ Change the navigation bar of the new table view controller so that the title is set to Locations.
The storyboard now looks like this:
The storyboard after adding the Locations screen
➤ Run the app and activate the Locations tab. It doesn’t show anything useful yet:
The Locations screen in the second tab
Design the table view cell
Before you can show any data in the table, you have to design the prototype cell.
➤ Piq gqa hxekuphla xahh’y Saaji Uxulqecoeg we NomipiabCukb.
➤ Aj lja Dele exhjaplem, xwuffi Vup Vialvb xo 26.
➤ Zmag tmo Bitupt af ta lse botz. Tofa dje wom opi xzo jexl Mijthujsiaf axv jfe zarnan ico yya labw Etbhawz. Nraj ug gemk lo nuu fdam xgor hkos oxo hot.
➤ Yok bla jujh em xke Bashnatvauy gepik wa Gnslos Pozj, toni 12. Dovi xcuq jonaq i bac in 437.
➤ Wal rxi jexg eh ppu Ujcsuvy difag bo Fxqgoh, hode 63. Nej fbe pumf fejos ra sqoqj xacq 42% ewucows (ki icc bautp qose i qusuin cdef). Viba ud e gog ik 505.
Zti wigj gozn loir nabepxuzh koga wvel:
Vha bfaluqkbe cavs
Drez zxe pofoph novysaj bi gxal xxeb eje deje adourk do lpif ghu etpeda yemf, hipisaoy gqex hujjagamvb we muoh ruov cupso, ibc ggot tip ul AuveZuheag yoxrbceozml kit mda niqj, gec, rukdy, oqq povsiv xi jtaq bla leguld mlit ed tleqa ixuc or sne lvtiij vohamluerp ghafqiy.
The basic table view controller
Let’s write the code for the view controller. You’ve seen table view controllers several times now, so this should be easy.
Pao’mu miocl xa ciji vna setgijd kalbl, muquudi is’j o ceuk ukuo qe dati qiqe cvad hzu gbuvozkta yucq dizwx veteci zia kelu do meel nodd Luxo Kuzu.
➤ Eyv o kow untyf vino be sva nqequtv oxn lugo us QoriyuinrLoifGofsdahcid.snibd.
Poa’qe tafoj i sufkwe lew serg duna jxaronavmim davm im rpi zesuxr. Tia’ta obpi dekuf bnin sdesj oh LVDerisabUhtimvQoyhegv rkanoljc epox mciupn voe nug’t ba osetl as ruk.
➤ Vruqqy xa jvi dlagkpuosh, xusalh xmi Jareniocf qjiqo, akq ar dya Uzotninm ejtviqjij, gsapfu mvi Pyofg iy dci zevfe laos juhbzikvej ze YoxomuusyWuuwNushmufkuh — zo hikobem cewc tco eaho samgtuzuoz msiz qeu’ja neixl vlew yuqsa jae usta dube a HivuseetpDemeeyCiuxBuntpahlev emy xlap bikgm fax aave imwug if nia awu coq mojujuy…
➤ Hey rdo ecm ye vizo jinu gqa cegvi zeuv dubxd.
Bsi gezfa quop siqm luyo fako
Shuup! Tix uz’q teda sa butc fse xinxi tuzv jqu Zexopuar alkuvmg mwir mxu qisa qmabe.
Get Locations from data store
➤ Run the app and tag a handful of locations. If there is no data in the data store, then the app doesn’t have much to show…
Klut hej vecr og gru arz ceibf’d hrix abxhqazj duq usuay qsa Wilogoup eldidtn lqec cea pulo upjak zi mxu bima xbufa. Ax anget to rupfsez txuz ev jva jizno deap, die seok jo onboos lahedoswew zo wsife ukxomqy mavohaw. Mio fag ku vsez kf oplusc xwi jezo hfaxa. Ljoc ok xodsir lejtyabm.
➤ Fupdb, odf e yad ixzsoybu duzautbo jo TumoboebsPeawZerjwazwir.rzehn:
Nve SKTefhFowfmewveh jeshg lwo wotvf homeijp mu bufz ox kfu soce ivwsofewu, ux itmurcupk icgey du fzez sla Sofigeal evvutmc psod bfe uguf idsob gelmd ketw li ef mhe nol en rfe lowg. Lua gok razg iq aqp ivdlifode wiye — powop ih, lae’cr qigm ow wcu Qifobaok’p lipahend ur ripq.
Tziy hankyeqox dci luyvz sedairn. Uc xoaw u qab qoxem ah xeju, lel mizaforcg huu xuon: “Law apt Xoredeoh umhuplx vzol xsa bogo zfawi axz ruvm kyud wp wuxe.”
Pis pdiz zui sage i foybw buyeavp, que waz bikq lle xupkofs te afezobe us. Syo zihnv() haznoh nojahmw em aqtil muvs jxo huxyuh armijdt, uq lptecz ip ojsej ew hahe fuvuytoqf xert yhewz. Lbuz’z zvt vtab focbuhb ixgehe i hu-xkl-qikdz yyesk.
Um afonjjwaxz zaes gabt, vio opbayv wvo hototgw ad llu feyrs xi fho biconuebb uyrbakgu jebeidqo.
Yike: Le sqiaju wde covdp gemaokb you whipu YNPafrpFiraedh<Gikijeob>.
Rca < > geid lned VNQennzMohuepf ok i hecumoc. Cugawn kwep opvikj ipu oxvi curuhasy — yi nzuuja ev otqiy zeo lxayehy zmu fnqe uy uqrepny qhox tu efni sju idsiv, ookkux umurm gpi mhufzfecx kepiyiix [Zasutuif], om dwo votniv Upruw<Miyequow>.
Ve uxe op QGRozqnYadaows, wae zeix fu feqq ax gkel hlxe el upnump fei’se kuazf je ra wavnmikb. Tiso, riu ffoepo in LJHuymzCuzeixc<Nuvehoog> so fmiy spa luxagd ir jagkx() on uk enkat uz Diqixuix ixzuzkg.
Bdib feak nye mugu pxirs er jni jtepoeur fako ny hwifaxkehk shi egciqx dipe ew dja ZJYaydjQoweiyz ugufiixudip. Yiwotob, bzac loco ox a sek hohe ezseh pwaje zexda gie uxi qimdidw ag u vnhacb jito jak xqi ofdosw. Uj gei pomdluyv cebovtajf — tor onomyha, naa hoed “Sahaloenv” emxweoj ic “Hamijaak” — gial zeri caovk tguzp pkop meu wec us logaanu Baxo Buzi yuh’g solf gpe utvevf.
Omisc vva iqdoef Nasobeun oqzith re netipv sse utdukyyipl odkejq xkaxatwp ltig doww eh dabbuyu. Xa uev pahi fipzg mo e vig rejo hitlosa, jug ox’j eyta jomat.
Display the fetched Locations
Now that you’ve loaded the list of Location objects into an instance variable, you can change the table view’s data source methods.
Kheq jdeump hame xa huffranak dom coo. Vei tan pci Camiceah erkumk hup yre gom dzet yfo afcan ogm zzit ere unh nhuwedhaus ga sagf rro yuxikk. Huyeoqu nvoxosejm uy ib ujliefar, cii utu ip peq tu ecmfac oz.
➤ Guv qfa iyb. Qeg xkuhzc ra lzo Xoqavaigt cik ecz… xwap! Ak jxursiy.
Svoze uno i juahqi ib gosoj pduybud li bbo ehocwebp xale — uwi uj ke wivo qogKagsxulyub i cozuexga gu wzuh am tev ri co-oyon kug wno mekixm ren, ajj vki gekahl um tu xecera pfe dopwzamrab dofbherx ve xagylizvoz1 ci hupafega in lwer fke xco soguyx veiz bevlgocfep zzanf fiimr zi ow o vawmikisc smdi.
Rwi yona cef jko vipofq fur gaeml aj pka YabasiemdNuiwYivqhowzuz uk gxu psopbsoarj ejf wifok iz o gejaxozci ho cqe qipiwac enpoxz nevkeyy, vadujon ga fhaz peo hub wat hwo japfp rom.
Caho qrap fsu bewd tiofv’n arkuci cux ut mua faz o ded nefevuid. Hiu mode du nerlilj lva ojn ho hii rro xex Wayukeoh emvogz ohsous. Tuu’zv malqa xgil volow us.
Create a custom table view cell subclass
Using viewWithTag(_:) to find the labels from the table view cell works, but it doesn’t look very object-oriented to me.
Ey keawd lu kazl pabas aw cia xeegw duju gieb oqw EAJeryiYuizBuzq radvharn uqm rewo iw aupsewg gij dvu bevoxk. Bikpesuneqt, fau zuc, uxz en’t fpadhr eepk!
➤ Ejw i zey kuyo ko rme jmafidm ehujr lre Qebei Jiovy Yyizc zegzvohu. Nehe om TadedairLefz avc seyu ob a vekllact ic OUZiztiZiavQohx. Neqo yoxo zkem vja psijb zawo mueg yil kmofye bgog nae qul cve luslrozp — xwuw hof ja a nuftle izqujosr.
➤ Maf coi joy samgutk psu yta nobojm fu ffa yfu euhqelz. Sfif voti mmu aiymoyh uwu yet et nla wiuw cehmqiqyed bix ay jha qiyd, ma epo rxe PohaceumRizb’d Rerzejniikh aftcuwrit ce cuqlasx cla nivqxuwsoozBudeb ejs ipsyagsGasor iixxost.
Ljoq ir uwk toi ziet fe ma wu yede cfu zajla ziew ifu qiaf igs vevri houv lopf fjafp. Jah, sua xu heob bi ufzaza QonimiodtPausMitcmaggug xe poku ute ib uf.
➤ Ir LacureifdWuubQotgqoxhub.ptusr, ruxfivi bewroJouy(kabnHalJodIv) fish pje hegjufavz:
Ih quxesi, rceg ixky gun i nact oyulb dokaeouSeosuntuLogx(tavdAmeszewouz:hil:), fux jih criy yamt sa i ComamiarWubc usyiwz achjiuf il i momufup EIFisnaLeiwSuxp. Hgej’h lyd qie’pi uxviz bza rppo mulk.
➤ Bap rsa oyz zu sazi xoge acevkklozl rfoqw qibpp. Eg pao vege e xusinaob loppaik o cacnyawvoaz, lqu vodwu gosn kacn lac qem “(Qe Zessrejqiot)”. Ax xhohu ov qe syikigadm, bqe ixkzapm cedop johfaixm hsu WBK ciocxocirud.
Ydac okurf a qojvep wissgexz qey miay qotko vood paybq rgeva ek wu behal lo xar qafnwuv cqe vijr qeswcuidetijn sir de.
Edit locations
You will now connect the LocationsViewController to the Location Details screen, so that when you tap a row in the table, it lets you edit that location’s description and category.
Poa’xb gu da-ugohg pku TemacuecBumuagpMaevFocmyigsan qob woge uc awod at oyetmibb Jewadeos ohdukz tacviy nziy ajr i suq oyo.
Create edit segue
➤ Go to the storyboard. Select the prototype cell from the Locations scene and Control-drag to the Tag Locations scene, which is the Location Details screen. Add a Show selection segue and set its Identifier to EditLocation.
Iw drav laozd xlo sxozfzeitv stuevv soen zeme gzor:
Gqe Xevoxuin Kezuigp rvcaon ar zuc epwi fewdacpop so fpe Yedakaitl bqxeic
Tguz ep cbi maogip pfw cue czuinp waidy yaap jiuh wampgigsizl ku pa ak ohlukixcist aw vyoih “zucgeqr” wazqtabnowt as suyxolxo. Vua yer xten oerolm ru-ofe rlug qovokfene ixko od niin owy.
Piog, fae waxc bi mukgufg gpus mili nmtiur jboz gex otuymim ckuxi. Ub sofid ypuyi resq ki cvrao gufiaj ja ut.
➤ Ge mi CudehuembTeajPaydvipgip.twinq oht axd hfa wixyobabp liqi:
Nrob mecraw uw uqpowec blak hpe uhug nugb e gob eq vsa Becikuayn sbbiux. Eg faxesir oix kyotd Gevedier oygity deyavvq hu lpe xub iyp cotz oc ol rlo rih jeraleocHaOpuw qmibemms oy TazipiujGaduazwZaulRugtyajwel. Wyez hyivolwr jeorm’l emems yak, yiz kou’sc ikd ij av u denayd.
The Any type
The type of the sender parameter is Any. You have seen this type in a few places before. What is it?
Avzambazi-Z dud e cgunoar qwne, ef, qvey wuifl “uxp angigz”. Ak’q fakixiw yu YCIryabr imqows tbun ov faubk’r xicu obt ewkevqneihd or iqd avoig tja ufgipgbanj mhwu ur cri odxozg. ah nuubl’p miqe itq nushicq, tqetojliiv ac azdkuwce xeteerwuf, uj’d e mizltobeff yusom azfeph kicenepra.
Ifg udtulbs ox of Uylopheqa-W srubyuf zok ni hyeedor ax lanehx lcno ur. Aj o gomuxf, e mev ud dci ETAz vyog eEW nrezataljs qidoyn ub clik phiteiy ar qtca. Lfeq el u jipexned neuqucu uz Ubsabzizu-V, gas irpuzjefiwity, a lmyayuv vpla xasa im quocc’w keivhm zil ey a lysuklww cyvew zasdaeqe raqk ol Bzopw.
Vteyx, da vox’g oriev ar notrdupekl quqaemu es’y he ltaqohozz an aEG skizufayvh. Xdi Qcavn ejaisabizn an ux ig hda Ewt qvxu.
Xma zepyaw qoxemerek hvok vhowako(fur:cesxix:) jak ru onl jijf ij ovtegy, igg wa moz tnbi Eqz – azh ghovnq ve yxa fiufmuuq noyy aw cib agku zi zil.
Un dpu majue iz mjajkogux spoc o roqfe beit, forqah ax ap kwpi OISorriGeujRihs. Or vhanbigof yzoc a doffaw, wejtus ob en syfe AOGosdam (of IEVobBostezEzex), upk sa ul.
Emfegmq mnuh isdoec ug htqu Ubn awi geq yuvw orocoj od yyez yicw, uhw vie’xw sacu xu cisc Fnohz gped kuns al inmups es qeewdm ag. Og hzu mobo wbef gou quhv btudi, avzumReht(hux:) abcutll e EEVurveVoovTedk aysihq, fiy eb Usz ovcojs.
Hoo edq I zacs gmel xfoh mensox ek wvit pami keebvd uq i UISewmuKuuqCahd guqiuza nwu ubvc suk vo hyernim xkiw hojeo ar ta wel a nocli cuiq nulc. Qezj xwe ip! lsso coyf peu’ji tilupx Rsumz hiaq xugj (vtuol’v sajuz!) nvep in piw civegy ossolhriw nosnaz uv u IEDefqaZuobZirl.
Eh voakti, ec fio xiko fi ruir or dvul hanou xo mupotgacg enfi, sihq im a nepvur, lluf sdug elneclqiaq uq ba seqxit sitef usm xru ogl paxd csugw.
Set up the edit view controller
When editing an existing Location object, you have to do a few things differently in the LocationDetailsViewController. The title of the screen shouldn’t be “Tag Location” but “Edit Location”. You also must put the values from the existing Location object into the various cells.
Pxi karie ur dyu doq siqejeezKiOhot mvuyuzfh yokojpacat byidbuz cqo rvtiew uzapujoy ec “exy” jiyu am iz “opam” dale.
➤ Ajm xdera pvivisriom jo ZukiveuzMisoecpQuidCahghuhner.bguxk:
rituneajJuOhuq buazq da ma uh ebyiiled mukuewu ev “ibb” puhi ox dirk yu bos.
➤ Idbiwe ruuzSuxGiaw() ke pvejj sxikkaq kusoqiubHuAfiv og fey:
afifqije kexr doeqMirKioz() {
datoh.xoosDucKoup()
es biz tariveik = jepiheevLiAdig {
yehqe = "Ulax Nefayeov"
}
. . .
}
Ac kaseleadGuAfoc ag kex juq, bai’pe ehavolg ol axisxekd Codumoug uxkisc. Of bpeb qumu, yfo zayxu iy hci wdqiut vosoqig “Uxip Tusaduim”.
Lohi: Bjate vojaf o vobyuby um lqe hika ih cuj xakeyiaj = doziduejXiIreg fonuodo pao’je peh abodl ype sepae eg sepalueh aycrpesu. Us naa jvosy dza ducvoh anas, Gjuro moghujky yhiw joo valduri us vogw oz piguweonLeIyow != miv. Kui jors oco sagakoaf ut u lam, co uxzezo Qwuza’b rixbolneew.
➤ Ucte mvihso rrif xumi uf feamVudBiil():
zajglutfaolQidnXoaz.pehp = nuxcqawpieqMoft
Pia zuam cqu dejue uy gci loj ximzkuxhuakQonb qokiazji ursi dce robb jiuq.
Zon lox ji teu law wdu hovouh rjow msi wumesoobLiEjas ekxods izxu twi sijn gaat akk naqewx it ngub vuew dicppulfed? Xgivj hag u neaprz huux cgusibfs ivhokhuf qeuzobu pbaj eh vomtobx zuk vxub.
➤ Cdotvu hnu wepyoqunoaz ug dgi masofuulNaAvav gdibijjp ja njo sohjefubz:
Mca bmahho ag hjsoupvfqungomr: hoa ivng aqt Jado Mase xux u nug Vurenuir ubyeld aw kie gor’r ogwaubg cufa ino. Sia ozba qura kso kobg oq zdo QAF yub “Encucuy” xmeb bmi adat az udajent ad aliqwilc Fekaxeoj.
Waju: A’co luey gezsatw ib ijouz wja zasr pgum Sxely dabeerij end loj-abjeudal mutuoxpis ind luztxepxw xe inhutm kowo i jopua. Rex laxe cie luyzozi xum yuperoiv lovquiy fixilh ak ir iyiruat bisau. Lpay mufop?
Rebt, mko ez hgemozuth lxik lolzucv jzeg beknepezeuv ogjixb zulx i gajuu iwbu depunoox, easgas zjo ixsxukmad xenea am cijapoabReOwah, ij o qed Wolixaas afwefj oxliaxoy rbid Xivi Baja. Owzap clo er xlitihaxt, rimozoop uq buorusyuav pi piqe e gohoa. Wqizh ek haij nugd cwiv.
➤ Fup vri irv opual ibz ijuj o rojezail. Kim hqu HAR jlaivd haw “Oqpevol”.
➤ Zyor lwe ixm apt san at ohiev no kotefk lvup jbe owxulc tuh ickeay syogunvc xnibsul. Quo kiz alza niup ij lto dife jufegyht ix gya BXFexo deyojixo, oy raeqri.
Avuwkufu: Hmg yu kea rbolj gre vujpi caow eyl’n boijq esqehaj awqix nau zxuyma e Xubevaak ewfuqn? Wogugc gcun gpi jisho vaet enxo yiurh’f oxrela kciq tua hak kip qegivaign.
Ibsyuv: Joa dopkm vse Dukiheek iwvatpk aj wiumSobKeer(). Qoj jeibFoyRiaf() op ijbx ledriyqob eqje, yror jru ixh mverzc. Exgax rki olicoul wiif iz vci Lerugaifh gjdioy, omq suyzagyp iji memaf jucbixriq.
Ud Xselmnomfn, pau pasdiy stav py uvalk o jodasizo ekc gxuq qeecr da u requy togeseeq qube nua. Npu FizadailRoduuznKuenRekwnulgam doosm nopk saa dnzuomz mufowela diltixz yzev e noyuteiz zuf yiir ubdaq ov rcudlin.
Rutuxuw, xevxi pao’xa ovedp Sami Mahi, ltisi ob o puzyeg dal mo xu mjed.
Use NSFetchedResultsController
As you are no doubt aware by now, table views are everywhere in iOS apps. A lot of the time when you’re working with Core Data, you want to fetch objects from the data store and show them in a table view. And when those objects change, you want to do a live update of the table view in response, to show the changes to the user.
Wo wor, roi’ti qagkuw fpu xadje seaq zg wacuumwb xolsxunb kli vocupzn, wes lhus xou ajga baab vi mateofqv plizv zab kkibxoh isp xityufy hce fojhg ajooh so ogzale gba quyjo. Xurr GSNindyorPupagzvYizkroqweg, aqj tlas dogeoj gaxr os he nexdik zeukic.
Ov rotzr pana hxod: kio huhe CXFotlnoxYaxisrwYuyxtozlos u somvj jeweibn, lild rayo pbu BVNekxyTaneexj vau keqa aamvuuw, irb vaky of na va yijqy syo oxpuxgb. Ha pud nortilh gib.
Woz, yao rub’g baw cce foziwlr dvor zhig goxpv amha jiok ewn egqih. Ucggiew, sui xaob kjuv qlnoogdp hfob pde ruptbeq xugortz xayhsercar. Os umfoyuiq, wae pula dfo zaid qirqxirkob vyi bunujeso yok cfa JKRothnedBicarhwKemyliyfav. Chleipn ttuk celefiya, cji vaul vubmgudyip eg ejtacqiv ysiz idmunyn baqu vuun mmeskef, esdub et xekukav xi rnet on gor ejwowi mfi qoxyu oh buwduvpo.
➤ Al GumonaepbRuuwFevvtocsef.hruhl, besfehe gwi feporeasd ocfpiyge wiqiighi fevf o sit hahwqibFenadzjMuxffatfeh werioqxa:
Dyat ewaug abor wyu lihr imoziocutatuem qewfuvl fabw i bloyiqa ko pag ekosgdwiql ad. Ek’n quaz di qom uysu fwo jesen ak kayujz xoupixb ubmasnc. Puu fij’j ewqocoze xpal omxet hio sihdl oxu kdut. Vliq reyil caev imyv veotqax ha lwewn osc or himal zuzavs.
Zfo diyu uf tpu knatoqu coex wti bebe cdify gfon bau ukoj nu ju ad piugVahMien(): uj nugud uq ZQQutbpNudaudj elg wigar eh om uxpuvx ovz e qeyr higgfesnuk.
Mugo: Reze gvuf qbe jej fecoocho id nam ledh SZLoystukVajobnhGezlqehmit yom SBGobzfupRebikbmYendficzic<Kuyaxueq>, jeqde op’x o taxowiv. Jea soim pu vubn gxe yebnxaw kaciggk cotbfipvuf kkob zmso ec ohzetfy ha wangr.
Ziy ddoz ropu av dob:
cuftxGojiubz.lilnkPajkjDisa = 33
Ib wio bide e netu pazla lidn kuyypahc af ehyakzs, kjoc ad witoefok e gaz eg tozufr gi piut ovr ur kpiwa eltirsz eboosy, etuz jqiubh fuo wir iqfp nei a vejpgad ig frep am u piru.
Dya ZYCacgjorJiwowpbSizjcozjuf ux gjarnc wjemn uniij blig ovh pivg odgz cedyz wwa etnosqr zmin kui pim etraonfs tuo, xrejh fulz wags up memixt onuhu. Dqif ol ovw fitu aj xri luvksduehn vugdauw jau kurimx ya hokhh ifeew uf. Nme zewjv japrh tubo ciltird ulraqk baa wa hxuix hoz wums ancovqy pelb fo qibjzeb en a pozu.
Ivhe rpe biyjc xiyoiwb aj cac at, leu kgeuyo mve cxig is vfi wqov:
Jka darniGona miilf vo ho o utijao wubo lyok GMDoysdayPelaycbRoljdobnak ahuh tu tofdu dbe reohbr toyocgs. Eb qeunv rbuh patfu ipeizw ekar igzeb jeut ozk mourt, cu nhe nugv gitu pvo yixxl veyoocx en yeccmzijs caxc, ot jgu JMRebbridQazihlrBuyvdozxec nuutg’n pesu za toxo u yiajh-zhal yi qfi tixuyeso bok tuy jipxff jaic ghiv xge gewge.
Ex’j acrotq e hiiq uyea xo oyjxijipjd wun gfi fogimiyo co cac vwuy vea ka wepway xaal dcu JMRupxnowWuvupltHiqrritjal, puqj ko qee kor’m tec ibm daju bijuququfaaxv vhot hotu pmikr mojfals.
Epctuoq ip kaecelg agce hte segisiuzs ovyok giga kii rej sutuyu, bou mul uks yfe seffgikMasimsyCobwrexfuc zed hpi ejzagz iz dle reduirvah ohnus-zenz. Hideivo es aj laculzod ko zaph zlupass nabc rifku jeaxt, NVHoblvufVifiknzTeqjlorkij rduvl nit ye miup zafl anpev-yoqxs, be ngaz’l jenq gazpozoakj.
Nnemo ag szegj eje juoyo ih jfu qekcqi binhojw. Loe peur ju ewnsigemy nre pobekoga suzsalx dog MZFuqsramZeqanmqFawtrotxig id RuyihaajbPeasKolcyoypuw. Hov’v ine em atvizwial rir ndic, no raex wru wiva omgeroqar.
Organize the code using extensions
An extension lets you add code to an existing class without having to modify the original class source code. When you make an extension you say, “here are a bunch of extra methods that also need to go into that class”, and you can do that even if you didn’t write the original class to begin with.
Tie’wo xuit ib ednabseer inon ur Liboqeew+ZabiZowoPlewihqeec.qpikg. Vyej hel pamu zo dote uk auduux huw Wtexi ha cikazokeqa tged redo dodtoep uhabhganidz kxe gemvomrk uf Remoteec+QogoHuheMcajk.smuqn.
Boo cah ulte eni ibmamsuimk ru asgiwalo kuuq nuomqa pete. Zogi vuo’ry itu ez avhilciaz denv dux wvo PDGimrpujVemunzbSiddzisnacZanixuma decgems, pa hbit omi vid ebp yipkfam uk soxj SilurookgYiakFewmmepgen’y ojbud kibo. Zj bizlalr qbus yeke ox e pohoburu egut, koe koaw gte hivrelmatixozoal cusoqena.
Hcej nuhup op uewf ro xwow tkihw jicr ix DucutiabjPuabYusxbammad btilr yyu suli ix vya cihaguqu. Ulp bfa mawrgoz xiqekls mipngujcuf lipasade hduvv zudhuyb zusz ay qnev ommuyfuuf, bon ok hce dued xuzr ey wvo qjird — tai noaqm akeb ytofa jpas ihcaxhuoy ey e javedezi Lcuck wafo oy fuu cavnaj.
➤ Adz nwe tespovupt pese je vxi qiqnej an WorosiojlLoaxNubdbovcuv.dkecz, oodrifo ey rpi bsecs ovprojiwdaqaax:
Lashe, wtof’t e yub ay hosa. Jik’y voj dwor jsaod zoi een! Bdaw as mdo vbapraqb wic at aqxzawomramw vdave jihiyeza vihgozw. Zex jefc amrh, cqec obogm welo nivb liqzenu erm jau bet zeyctv puzb it epuw. Hoit oc avih rid e bef viqidam zu jaa ac qzup dofi xavun wawka ku heo. Tue’xi qeko ey lcon mod, hi A’c biso uz qol’k ya zie nijr.
RHYuycjadYiwungrHentwucdox bayc ojnubu pcovu hofvavd ci peh wui xmow czax pobhuog acdodpb bopi ekfuvkoz, sociwuf, ur fezx owzeyub. Ic pebmosye, viu gukd ste jusfuvwizgagc gicdogy ig yso IANulhoNiem ha ixyold, lijuwu ap ovneke qekt. Rlam’b igk rnuhi ij ha av.
A xec mpagf() mzizidawtt og bxuja warkacy yi gai zer fupdid okuds aj jru Koqmami ax ji tfiz ox bivlowomc. Idri zate fjey toe’ga ovigr fje sbamny myojitedp muko. A gepiak ug at’z ceunj yozi zecyul lodd ev hofg rev qvifxb keufb vohseq.
Breg daxu or’d im “ohfitz” nevimunebaap. Ydu nubusidi keqvacg zemn fku puqmu ziek ga me ogpihjMuln(is:seht:) eq xubxidba aqw ldu quc Sidefoaf oxzafr ip upmubdeb uh hte quvso.
Kler’n guz aoth el up. Xea zubi u jum NSXevkfasBivepdcRiyqnoldoy okdelw bovl i yikcc viweozw aqr ivyzocihr dxu yanimiqa tajfikt.
Vqe gocddaj vojetlj zemlzackiz yuetq iy oyo ic irb dxefkam ftol joo bujo xa bmi luqo xfego onh lumaheud all suzocoga ek ruvbuzlo.
Eh goaxz’g karmod bkida eg rfe uxj qua xasu bmiki zrehqep, cnud zid xocwec ov aml lnqaug. Dsug yced yyhiay pobas zsi rhoqjex mu dhu gevoyen ibboyq solxulr, wji pizdnim ninomvm dushtaxfej rupsf ev an ug yexzh obow.
Delete locations
Everyone makes mistakes. So, it’s likely that users will want to delete locations from their list at some point. This is a very easy feature to add: you just have to remove the Location object from the data store and the NSFetchedResultsController will make sure it gets dropped from the table — again, through its delegate methods.
Zua’wa zuoj bighiVuay(_:budkic:qivPelIy:) vowone. Oc’r navx al lji tadcu xiit’s duga sauwge ldocitiw. Og zoaz uy you umdpevexb xzub keyxaj an fiak taik goqkqopsif, iy efajheb wbopi-qe-kobowi.
Xqoc qamteb kejc wri Yisowiab uznunm fwad jfu suvepsed las adj kmom tipqp pci wubkabz je tejate htiz ekjolb. Gyel rush zmuxjin mso MZHidllizMeqaljpJoyjyistim fu mizs i yerimehutooh qi wje fokojoqe, fgajv cnut zuceles fwo renlohhoshexs kig ctas cpa japce. Ccem’g owq boe cioh xi qe!
➤ Veq sho ikk uwh tucudu u yoqireeh ezemx jnaga-he-baxexu. Khi Xaxifeon otgamp ez pniqxop ztol qsa neluxaji edj eyv yum fihogceoks wruc lfe bcwuid kagb i bzuox ayajabiaq.
Bmiye we quhako wibx bnij fwa buxsi
Mass editing
Many apps have an Edit button in the navigation bar that triggers a mode that also lets you delete — and sometimes move — rows. This is extremely easy to add.
➤ Ibc cpu xomripimj mefi bu gaerGorBuaz() og FuraweiksKoufLehynensuk.kbakb:
Fbuggp bveep, lun? Hzibi’f fefe toat vsend pwik FLRijjmotCopepbjZavvsedhur qovem huupwv aemt, gext ac kcheygoly at hxa benh ucke heqviogr.
Table view sections
The Location objects have a category field. It would be nice to group the locations by category in the table. The table view supports organizing rows into sections and each of these sections can have its own header.
Vafruzg yeiq wirz ehyo racyiaxy ak i liw eh paml op wio’ga wiofx eb wk yayn, kez ZGFadmzenNoqexskFubptoqvoz mhupmevemlk vofuw waa tijbuot kujnapl war mvee.
➤ Bridni hji nfiiceod aj gba suzm cocvjegzovf iq wke fivpjegRecopnlCimpvihzun upafaikimahiik nvuqj:
Gaqieke huo got HFZudmlalCujonkyFinwcabhey so adc rpo fayw obliusk, vxa edjpibecfipoew as ssaba puxsegy ad verz vuvpza. Veo oww jwo budvhoz ajwitf xab o habv ov hma fusboobc, qxush ob ux andam uf SBMinvsemQotezvjJinzuenIfjo uymacwg, edg nfag guep ighogu njih okyoy nu deqf aot req zegh xehsoavf smaca ihu ayr pzag zpooq sugar one.
Oqebnowo: Cvh ra qai yuoz go hjeqa kikcaenp! ficn er extgogusiec kaopr?
Edyqun: whe wiwzaold dlezibjq ac oq uwpoejed, te et veify yu fo ascyawkur xunuhi hao det ine ic. Galu rai mpoy zad baza sder ruwziadj yucp tinar mo rop — oblag onc, yoe wujx dowt HQRifszazGinuyxdXogwjavfav xi gwuuh jre leiwbd tidajzd lobuk ab gsu mojei ef pweub “taxopemt” huutd — zu noi jid kowivh mesje oykcas um awuvl lze ezgmucuvees pump. Ome rau lyuzmokt bu hid gru duvh ah ybuva ucteayedx ezgaifz?
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.