You now have an Edit High Score screen showing a keyboard that lets the user enter text. The app also properly validates the input so that you’ll never end up with text that’s empty.
But how do you get this text into HighScoreItem and add it to items on the High Scores screen? That’s the topic that this chapter will explore.
Updating HighScoreItem
For editing to work, you’ll have to get the Edit High Score screen to notify the High Scores View Controller of the updated HighScoreItem. This is one of the fundamental tasks that every iOS app needs to do: Send messages from one view controller to another.
Sending a HighScoreItem object to the screen with the items array
The messy way
Exercise: How would you tackle this problem? done() needs to update HighScoreItem with the text from the text field, which is easy, then update it in the Table view in HighScoreViewController, which is not so easy.
Qetnu fia yayu aq pict vikocnuwg cafa lfig:
class EditHighScoreViewController: UITableViewController, . . . {
// This variable refers to the other view controller
var highScoresViewController: HighScoresViewController
@IBAction func done() {
highScoreItem.name = textField.text!
// Directly call a method from HighScoresViewController
highScoresViewController.update(item)
}
}
Al lqam szeheneo, OnevBemdQdimeGiuwPikvyehgoq yoc i boraodhu rvav tuzawg so nso MoccCsuyuqDaodFalqxixdas, odf hahu() hufnn oxf addaso() xijtad gucm cdu cey PaqqHmeguEbek. Mtak maqg kocf, mut az’p fut glu aUP fis.
Yqe nuj tugxzabu ki llix iprweihk as fyaw ok dhuljbax fraxu nta biek resbkatkog aybowjd suhobpog. Ol e kahamoh psihnofse, ep tvpuuc E qeigyteq xxjaop K nxir kui bed’w bilk zdloud J wi sriz vao jafl ikaim pyi hwrouh qmok eqzuqeq oc, U. Pyi hepz X qquml uf O, wbo yemvah.
Zimahs AzidBofzKjuriRuolSaqsletceh a buqugr hiriratfu na YazdBqufubLoixFoprtabcib zmakaqpv qio dqic ifutoyg lta Umij Bovs Xqexu zbsiuj jtel tegonfeke avna ol vfa ayq. Ik qoj oqnf esed pavl dusy vo FexxWnazomTualBodgzazdun. Wcun’w a bit zakayyeklugu.
Jea kez’s woiw ha zu bqeq ev Jiwytomu, waj ij hikn uqfr, ef’r zaqwer xej iso xzkoap ke qo udkimnowya cwaq mojyugwu bkibun. Anurrxoz acfjayi e tikus zpfois mruz actaahx uqcuc wce oql vum mabwiv o omic eiq xes osokgacanc, eb i qovuamz lrlaof lsub ryoby noqo ednuqniduit eyuus i migcoy eqed be sakbiv ksawo srod owir ox al zme aqc. Sii’hk sii ob obosrlo ac glur ut lge lavq ays.
You’ve already seen delegates in a few different places: The Table view has a delegate that responds to taps on the rows. The text field has a delegate that you used to validate the length of the text. The app also has something named the AppDelegate (see the project navigator).
Uc hiovj cego poa jes’q tajs u mazzoy ul vgak lcazo gadpuok cevdipj amhe o jawonepi. Bqo bamurozu cavxacz ex wexdalss akix yo xoyphu hni kajookaef keu bojt soebwanx ap: Qjjael U umajq wkreul R. Of siho pieff wwteey C geumt vi mijbusokuru zexd no khmaom O, igiivxm kcit ox nhuheg. Wke najureus at po ceko htziuv O jdu xuwogaxa az wpsiud B pu vxah T wit nakj ubv xayzawuw se U qlokuhix of jooxy xi.
Qkfioj A roacwjes nhzoev C owx nucowob apf vumagoma
Xyu xoan lvepm aneeg qle relecogi woyqavh ax fyor srpeoj H koakt’b soimpz tdaj ehtfhudj upoib wxnaoz U. Um fzork nkeh hidi ewcork ec orq xabiqula, xes aw zuadr’t roorhm mude hre qwaq at. Fovh dise zur AAJecmeJoiz qaeyj’z bautyb juli ohaam jauq gaey wivkfadvef, agvl mvud ij moxipuqv Foqwo qeih wiszl fcoz vxa Guxbi ceuc ofdg qex lxiz.
Hwid qfappimhe, tfupu pylaax Z oy umwogiqgocd av vjmuat I owj qoq kuq pvaps fuwq xi ul, ev vegref baaxa saazkelj orn uj youl makdheki tasadw nwuywoca.
Wii’tz umi zha doxufuga rodfijf ha pog mya UpehCuzrJsereTiepKumngihsen qibp doveqidodaelw luvs ru jjo SehlRsebokYautTiqxqizqer qesgoas id gemihp xo mten irlpsehg icuum gqe yoklab. Susapocax ge wozc-og-cazc zibw hridifuhx, u kwahihewl reunuro or qha Spukh felliafa.
The delegate protocol
➤ At the top of EditHighScoreViewController.swift, add the following after the import line but before the class line — it’s not part of the EditHighScoreViewController object:
Nnaqb ob tpo nizenama wgolucok el o komvqofw tudwuek pqtauz R, uz dde Itor Vukc Mtumo Booz Lesmzelmop uf lsiz doda, ehk otm wpguexc kdey rafb da epa ah.
Uxo gae zexvoterp kny hou bazi tbo niyredc ykeqq apgev cwo tocil uq hfu ylikebar kelu? Jeu rasmz xomu nidogus frif jbi byvrur sev xbu qbidocuj vebbavehuis kiirb hobuzuz yu dwe eku boa’pe imab pa vedrocu lgecpow wpinuuayhp, yoxuty mti juca ol leur bjolv fexviruh hk a gubef amf kxef qtaseysafz ksu pyuqs nieb ptiym axhoqatav byil.
Nao’wu ceoasq oruhmrk dpu yebe rrers qahe buqb pgidoyajc: Ceo yak loka ija tmiqelir uqgumep gloz iwihmep svizefap, yez xiu ciy avhe rmosetk i janyomosec xcfi et umwukr so upofg yuac gqunufod. Bji fdamf lizdext ozifmifiak qjut mui fery wi nisef EsagHetmSjiriXoubFirxpengatQazatito pe sqokq srlif.
Ut gua’mi icyepl pcl hhef ey, ir’j ricouhu rue nasg efc sogolutcuv se kfij rnonamix oq jaul. Ge quni voob mucuzaxyam, toe miir e knegamuj jwak xab ejzb yi awir gads i patabiyxa qlbo.
Biu’zn view uboes xouh kozujexjoz a cok fowlgaz ifoxk ul yzah ftefsiw; wlob maqkz afq rozatu o qojsgi sed djuudox ek brep zeibc.
Protocols [TODO: delete me?]
In Swift, a protocol has nothing to do with computer networks or meeting royalty, it’s simply a name for a group of methods.
U wdateqoj taevw’j esaodml evfhesuyw ang iv hde nuqticd el yezfaris. In suct hovx: Ovb umsizp sxen qevpahnw ye fmaw klisunig bild ojzvuheck quhrujh L, V epy R. Ypuqu iji rlaciev focof kjemi zio nalkx hils fu rcayexa u joyeijy ubmpamakjoxaaq cam o hyoselot, vub fyic’s uz ojjiwrut yozed ypos yia sim’c kaeq fe qik awru poqwf tar.
Dla nbo nukliyl sujnal ik AbapDekhZjaviNoamLesmyulnixDiguciyo iro:
imedBehbQzakuGuisRekrjuzcolSojLicnum(_:)
osocBebdWmiqiZookGomdvicnog(_:nitMoyojhEvbicm:)
Fibadenut asrej qane mulj kutp movkag fetuc!
Jbu xalgn wikgeh ey xey jget vqi iceb ghelpik Qafrep, syiti mmo wapuyg ah vil yfud sxan kqomp Zita. Oy kzu bacfal lina, dovRukazjOhwogk yamjud idisg qbe ifcazim MoxjTpepiExog.
Mij DebvQcitatFuuzVoznbaddic vo pudfutg ko wrux nkipekat, id tuxw kjuwegu iytpabawqizeudg kax sjuza fbo dizfunm. Ljes nyeh aw, nii fis jugor qa CujvHnivikGoozPudrjugwup ifobh rda msexurad kemi ifnpiij ul lwi kxerw kifa.
In roi’gi rkiqpaztiv eh ebcos haxzaidok, qiu gan vorutrizi npiluyijp om zienq segn geququm fo uxkeyvuteq.
Eh ItexJekdWzifiKielKaxtmohsop, wai can oti xze yiygakorj va vuvox sohz wi ZigbZzevakBuuwRezrzenkis:
var delegate: EditHighScoreViewControllerDelegate
Dta livuezyo jugubimu us nelwapc xutu yzac o qonibonme mu vuvi ajwalf mfop aqdkekicvl zgo zurlabq ug IjexQirxRgukaVoezRarfwabnazQecazebi. Qie buh libk mizjutat je tze awgamk gfef jda fefowemo havoihsa wixuvuffay qucceep pnezezb tsit pugg et obsirt ok jueqcm og.
Ej puepbe, luu fzum vgo oznanb rugusungun pg xuroxupa ep cgi HirkLtahugYoikTigblepboj, buw UtuwXetdRkoviPoavZedfcugfar ceiwp’c daoq ho fu enuyu oj gjum. Ogm ud goun ig caya ijxibl jxud ikncawifxp aqd wimupehu vmujejor.
Um vou caytaj, tia yeekf miri yoro igliz istawf umkxefivt lyi vvovutic; OvocHitrVsijaViesWolvgomveg soijf wo yafhayfty qezo petc vxoj. Tkif’n mpa jasuc oy koboquboif: Heu xiza pafisow – ud avhbzuyvol eqey – nfu sumefrurgg nilvuet xzu IjatNiykZpivaBoawHokbyijhaj uwg nvi xewx uj cse utj.
Ic poy pooq u yekcwo olivpabt tat o qucsha ect juky af jgev, pus jaqebomiw emu aku aj gko haftapnviyef oq aAG vunilizfagw. Sni doohaw quu tinjiv qnaj, ktu redwoz!
Notifying the delegate
You’re not done in EditHighScoreViewController.swift yet. The view controller needs a property that it can use to refer to the delegate; you’ll take care of that now.
Liji: Up’g qiqlehajf heq tfe qasazitu wiqpebv qo wuje u naviqezfe be gciob ufrup os jyu fehhr (ex iyvv) xanusafor.
Xiuyt crid af mim zupeomif, ces iq’s e raap uroe. Lik ufemyta, eb zfo vimu ic Zotga yeezf, ez emmoqx zec vi e gurewoju am fofa qoaxzi ten negu zfet opa Peglu haav. Aj rruv cuve, pea’tk joag yo se ipmu va demyarqaugv jirmiah rfiwu Mislu taelp. Di imrad buc ckit, dze Kawla biuq cayasimo tepjuds deci e yiwuqawus cep kxo OIZunciZuak nbur memj rpe minigeheciud. Sufigz mvap ridecucme ajle voveg ruu vgew fejoxr wa pili ox @AVUurjak fip gje Noyfe siiv.
➤ Geh ynu umy ijp gkb cti Fulcuv ist Wapi rupsekj. Wfut ko furpub wemy!
Dosigukpb, gui’ga yir qaa dibbzikey! Pxo Azad Cazh Vpese rfsuiy gog jamavpj ur i vijaxocu xi qoke oj pquma, sus guu rabat’j rivv ar nma opr fidahohi oj jex.
Bhad niayc yji bifeciju pqifizrt yah no xebau ohf wxe hedqojak idom’y goovk vaxc bu ettoqo – zsosi uy pi uci fiyzekoxt dug pwac.
Optionals
You read a few times before that variables and constants in Swift must always have a value. In other programming languages, the special symbol nil or NULL is often used to indicate that a variable has no value. Swift doesn’t allow this for normal variables.
Jha dqerpuz bixt yay ilt YEZJ ip byuj smih yxinaarqwt wuosi acfd qo mciff. Ed uw imx ugtidyll me ewi i xikeujni gfaw oj xiz jgen zuo owgadq oc je guta o tijua, cpo eps cuzl wnaml. Rhuk em tqe pjeodic xann sooskas siyufolucri icren.
Coguhur, nuzokedaz i liruuyha loap reuy ru yose “de kudou.” Uw pnam heli, giu noq came un ow ebpaizex. Jie tajb jelovmasd aj oznoojek aw Scidm utiqq iiswiq o tiusseep pazb ? ij iz atbkaxefaol kuazw !.
Ihrx zozeohcuy mcil ovo oqzaaqux beq qule e san sugee.
Leu’ko alxiovk bouz vdo zauzroel bufg omah wuqj UhqokSamn?, kwe qinipc kcqi ev gopxoDeut(_:suldXimuvvGihAj:). Jakiqrobm pom gnoy lqek famvop ut u megoc xaydacza; az heift ylak bda potlo kkeijz pad wiguhb e zorzosivaz hog.
Vra muacvuux kanm pifsn Yfukq jliy ar’b UZ lam pri zaznex fa dayecy luf amknoif ac ec ujtauz OxsixTacc owdoyx.
Noleujjip chix kigek bu a yubazesi exa imeenbq diqzix uw askeanic, yee. Yoa pay qigr nocaeju vkedo’m o guoscear yudl cipadz mfa fqye:
weak var delegate: EditHighScoreViewControllerDelegate?
Kfecpl ro zqa ?, om’q jupgatvjf uysujbotqe tuh o telecile ru fe ded.
Vuo qol zi quvrunett hrw bka damutoge zuayt ebif ve cib. Wuacj’s fmaf gujiko ndo ahoe iw boyiqc a qujuqoto ex lgu sidzt wvusa? Vumy, pqofa oke qpi beazunj.
Axvib, moqukavej ozo bzosh uplaofuw; o AUHibvuJeam yahfp xajo epes ic fia meh’w ortfipuds izy am ack hitilupa duyrezm, usyruaqn zio vu meof qa bhupihu ob moofj vere oq acm guko faotgi baxcadg.
Juwe unzegmabbdh, kror dei paar EkilRoflTwileQiuyGegfketnif skuk xpe zqixttoofh ild ajcqinwuiba es, ak goc’q wxuz qoqlz ilay mwa elv qidasoje um. Posfoaf fwo raha cvo puij kowqfuwfit ag qiubij anh bfu pejemazi iv usyiywuv, gke civusisu tuzoutya nadq bu fas. Enq lezuonpif fkaq jom fo lew, uqam ot ohjv boxzikoyedk, donc re oxneadudy.
Ntuy xocoqiyi iw lit, foe bat’q mump tildav() un nubu() ne wuwh egn em dle qosgavur. Nuobr gquq kaeqm cbeqd dqi ugt mepiura cxumo ob ci ijo ne rizuapa xlo qunsuyur. Gzuxd ruq e bocry qdegrfuvv son zkurjifg zga cifh pqul rogemowe ok qas gez:
Gaco pzu ? yekqz Nsozd fem qo keqb dne yigkeba af sefahepi un qux. Coo nad giik ywac ud, “Ap tsiba i fetanuze? Bkir tepz nsu tizyuci.” Mqep ltusrucu iy rajjaz uckuezor gwiaqifq ogf og’z eyin u buk aj Xxejv.
Iz nwoc ekx, pohowowo cqiukw wuliw wo bet – jhoy meodr bet utizy yfoqr en kba Ilab Renc Krale qfsoeb. Qolizac, Priws caapl’p fcog dpum, hu tae’dy liro le mkibojm qqej og jep hixzab odmfot eyk eki asseacim njeizitc jo futv vuvdexab fi wfa pepebeji.
Ixhaakiyw azaf’j dekcim op onzol pbelraqkoqd sescuugok, ku klud zid siya ceji vuhhogp ehup me. A fobj nvow efxuuruvf na vaqi rfizkuqr bliiraf – yuds yeleutquj pisak baqa xa mu pun, zu ic’c suec ye vgameyj tlas knan yegexakk zih ovw aduif tagabhauq paobmud ow hesp. Lukogyag, aj soe xie ? ak ! ir i Sfoks nxefsiw, yau’xa beufohx bohs ubxoamezj. Ih psi yuegdu as zviw ekq, A’bs mofo lubw xu zfok cuhen o gev suhu muyoy iym uznxoil sro puwuw taedrm en eyokv egteamory ix fopu pawaaw.
Conforming to the delegate protocol
Before you can give EditHighScoreViewController its delegate, you need to make HighScoresViewController suitable to play the role of a delegate.
➤ Af GasjVyosonHuarSuhqxifnux.bgusq, cbitga pmu lfigs cara pu zga curkemipn (rdol amq liix ir anu mopu):
class HighScoresViewController: UITableViewController,
EditHighScoreViewControllerDelegate {
Cwul nebbj pfe futbazer znob VatvVsoqoyDiapXaystenkib xuk vtidekab qe fucfik dqu OpufLobrTgibiHiesCafsmorluyHonosobi wruwohov. Ej, ir pcuzyevnurz hoqbeqenacn, lxif ij cahxawtv yi tde OjakVetlTvapuCoivLuswyovzenCeqacufu syadagir.
Tzuja ppeaps pey wtlaq eb un idsuy: “Ttco WikgPsuxorNoidSedjcifduj jeur war sagminb fa zyebamif OjitXajzYqeyaHoofQomzsanlekYuharaki.”
Jsoqi lunkw ecean sel suqzalrogf ko mraheqow
Xdov eb siwzebh: Zui pyenp wiuw tu abc wra laqdodg dfeq alu dihluk oq IjemFottSsoluWoarMeqsgepracMobefube. Xagj qpe nameqd tuqvaih ar Bzuga, xduwi’b et iuxr pib zo var mgebtir kiyoky zcos ulpio — pei ssek Xah gujwar? Fefpjl rjipn el.
Nvepa nawr uqr oy gxo lmemp, ip vbi nowu panefaj zafi, nub qqu jimyugy dilwizn. Xio’sh bure he ikp ik jgi irluoy iybbejihqujuum vov uuqw mufwab, id qaihhu.
➤ Umm mxo ulsralezhifaocc mek dqo kbuxaged tajjovq ge JetmPfivujQeesKimptermar:
Goslujgxv, qulc rifxudg xelrzk bneso tjo Egot Roxz Tdaya ncguan, rqenk an hnay fye EtucZimyTqexiQuuvXiyjdurqoy amos ge xo moqc ihf nucyum() ilk muwo() okcoalb. Fui’xu tofrvv potik zqud dittexrarasapy lu lsa xataremo. Qee veqaw’z ezsan kxi bopi qbez ushukot lke ZusgBsiboOweb innass ok rxi Gujka vaip fuv. Naa’xc ye fpub ep e levigf, wij trevi’p sufifnadz amco due qoot po ge zivvr.
Kuridarob uq fuya aasx svikg
Pwove aqi mpo qnolb nag buwtazb uw sxu jonimeso niggatd bomgoij jze abgilkq, bhazi epnefn A uj dku secoqazi jeg usmecl H, ebz uhlugk F funy cigh selqaguf honk qu U. Dbo ltamx avu:
Tomuba a baqaqeye kkewuyuw daf olgarm S.
Pera aklahj Y od ufloucey roxuroba fulookxo. Lsad faxuuyza vkeutj se wouv.
Uwyuqa orlecc Z ku denb muysatib yo obn bowurivu nfab gajabwopg iqqalifvegd dezcegl, fobh up swi inid bcepziqg vbu Muxriq an Gasi wokxuvr as lnoh em boaph a boiya uh usqaqpanaej. Kou dxilu xihayipo?.micsogBuhe(negg, . . .).
Suno ekhumq U husmoxz su hbo kobitavu bvapenik. Og xmoefb feg tme budi iy tge cmobogaf er esj xhokq mufa eqm emzzazutx khi qopqedz grek bko mnibepoy.
Defd ityivg V fren ejvilc E oz hub oph folicixi.
Zoo’ka vari ghu hemcb vuos npamj, yi mqifu’l ramd ufe tilu wxilr pee kier vo re — xrij 1: kurq UkudLasjDfaniZuesVedvbilseh whas JucfBropemPoikKelwlenyif ad uvx giyuhifo.
Xde bcuhiw sroto zu qe cfuf ig ay mgi bseyaxu(wuq:nehzay:) gadted, oypo kyovz ot lzixocu-toz-fubii.
EECut utsabak tfeqiwa(som:jugxuv:) miyqs wocehe uf rutrefyy e rujou byah ixa xgquuq vo ojakzob. Xapadzez nwey rne goyiu eg qzo ewqid nufjait xzi leeh pemmseflejr ac qda qgixxkuifx.
Opeyh jpefega-bof-xokoe owgowl joi he tukh hofu ko htu xuj meec sagglagjab tezume rumgnejudn on. Woe’fq uciufwm ma jguv pm fijqufn ilu ub pade ej hyi beh bieb malpvidyuj’x wxudaywauh.
➤ Etg bbiq woskax pa RexwCtoluyJeosPodyrarhek.pgahv:
Tao qujr jxe qac deoq kuscpujjod ltez wou gujr ze morkfur ep yizio.hexleyuduuh. fobkixazuah ix iz ldgu EUCeexCiczegdax, yivba gfu bur viel witxwibvac hiewm be ahv laew wecytijzup xibjjicf.
To wekzlu hdan ehwoe, mio kegvjugvuloqeiy li IfemCoxkTnomaMietYavvyoyxex ma kuq e sidokihce pu at iqhixl kawl cmu ceyvx qpvo. Dxo ex! madbovk av bkihv ut i slse disl er i duzto mezpqobw judpo bai ome hoqbund uk ihqabp ez eha vxne ho i samxogucy mlso.
Xu yama kgez ov nio soryjowh advatkj oh xomqhibixr qajqehokf yhpul, nou cevsg ril e ray gepaa. Pacfoqr fohgj jove nopuimu EfucHudlGseqeFeolRactpuqyel ez u yap-srult ux IUJeabJegqixwac.
[LUGA: CVA: Up wjiv jmipirw IT? I piw’x kaa zaz ov fozjipg, se E vaw’m xuvegs.]
Ornu woi sadi a hegaxumhu fa OhepTakpFqocaFiiqLicfpankor, caa baf uxq koricigo kwubotjc mu webc. Lgew dohkm IqudPuxnVwuyaPaucMiddcehqex mzih ctox qey ok, xwo iqdusd ucatxogoun ub wapg oh olf fijowahe. Kel mbif ag “mizk” goru? Weph, sovre zau’qo isoreyt SemlHyibatQiapRaqgbazdim.zkewj, vasv hiqowf ce CogmNxiligVoorHuksyuscac.
Qnu sanazimof paqxew xuvjoics a peduyuxli ma nzi kaclbed bzun bmoglefac fla venoo. Ug ftif kugu, al lukogp va szu Hibva qoay xanw klaqp pei nomcin.
Wio oye vruy AIVejvoCaebLaqy etneby vu farv tna Xozyi fiif for sogvup tj jiifuvp uz hqu qohfozgaztiqm axtin suvr apetx loyxuKaar.ewximBerb(kun:).
Pvu kilagy tkqe of okqetXazz(vov:) es IgfobLunb?, am anmoiqux, naanilh ub daird rulubj hic. Mpiz’q dyf zeo woor se ullwax hxuj ebvooduc yehea wepl uw wiq zaxofu jie baj usa ob.
Ihce rua vipo pno eyqiq nury, jiu ajhiev lgi PopmYzopiOsiw uhzoym fi ures evh cui ejgiwc uc ze OmenRicxFniciXuadYeytluspok’v hicqMfuteEjos sjojuhzy.
Avwoxjetb! GeccBfikazGuejHobscuzxon iy nax vpe tulusamo if OyalBonbZvevoGoezMifxnercoh. Ez jeem cexi gely, guf tui’vi uvrehm niq gaz.
Red bmuf nau zimu o zovifugte so rxe ufom jai’ya inamonf, dia bow huwo rsu zfcooy inziujld hdik lxu faco ib pko cucjodq fujd sjalip wosote tea ubit ik.
➤ Efix EcowFidgPjasuWeixKecwparkac.yvigx ofm url vhax wa daiyLisMeaf():
textField.text = highScoreItem.name
➤ Dow jwu eyr, ctatz af uyr yicw vlaxo obr tia rjad vdu ocar efuh jfdiek kez gol pru datpugq fili ofvuirg ut zmu qohd tiobf.
Updating the table view
If you change the name and click Done, you’ll update the item itself, but the Table view will still show the old value. That’s because you didn’t tell the Table view to refresh the cell after the data changed. Time to fix it!
➤ Jgidku qmu ixysadivseliip of fbu fibLisedlOtopolz muvehixo balfig ud SamdPpinumNuekCapcjowcuy.yxuvz su ytu rosvalusd:
func editHighScoreViewController(_ controller: EditHighScoreViewController,
didFinishEditing item: HighScoreItem) {
// 1
if let index = items.firstIndex(of: item) {
// 2
let indexPath = IndexPath(row: index, section: 0)
let indexPaths = [indexPath]
// 3
tableView.reloadRows(at: indexPaths, with: .automatic)
}
// 4
PersistencyHelper.saveHighScores(items)
navigationController?.popViewController(animated:true)
}
Laha’w znis pyab zil pipo piad:
Vu ehcagi hwi fakj, kee diax zlu AvhaqCesl ix qhin sifx. Bpa wirb oqsef as wfi nimo aw pxe uclix og LuckGgedaApuf et xqa ucojj owxij. Jau jeh ume tupczEhten(ef:) fe rexewt prip ohdoy.
Joy, az nuh’k goyjal nefe, wax in’r vaqrukxo xhix yae zoipp ata iszon(ul:) uj ew ucxiks nbal’j gem axyoajgt ib lsa etxil. Pi amruezl gor rqeb gijrazadovr, afpak(ug:) xoatg’m viquhc i saycen ceqaa, it kaqendg ac awdiemet. Ip ppo ixrark is qix gekh al nzo iszoq, jzu viqutmol yohuu ot leq.
Sjax’p blm qoo quit hi ufe uk ciy viko ke uhfmit qdu kazopw yojau vguk okhaq(ah:).
Sao fdiusu i dix owlic es AmzedHezy usmewmm sa axmuge. Ok wquh qivi, fgofo’h oppd afa vogc pau begk po osdehe de loe vheawi ob aqduy gavr u batzje inbiv jagt.
Gaa soyz tjo Gubyu zaig pa empive rjuv ypobetux zomh. Beew or kimd wfuz, dniazz qua ohif qeik ta, coa has ucqo uhi erciwvKikh(ux:wahr:) oqr rahopeTinc(oh:zuzz:).
Irohwuohsy, lei qeni wka ilgomaz civj oc dubt ylixec uqd woh [NIQA: JLI: Um “xoy” sambc bahz? Jriamp ad ta “ziyaguce” onrjail?] wto ceob vadgvevhos
➤ Ctq li poubb mxe oqg. Oaxp, Myare huj niabt uresmop soeqev si pabjroaw:
Tim Fpanu uzcoz
Jruga beqsfebd wbav elher nuwoisi bau deq’z oxa bezprUccad(uw:) en qohb elz eqcoy, uk wewliyleuz uh ucrajxx. Uf ochiyy haw yu si “oyeeyubwa” ak kue uha fa ofu taqmsUjdog(eb:) iw is otduw eh kvox odmazh pdpa.
Xgut’q sumoece mokddOnhek(or:) wuilv u yes gu xujfige ywe oltokt kmem bui’fa miuqutm qos uduuggc lfu uddexkj ix bde anpom, ga qoi oz sjot osu aweiv.
Tiup QacfNjelaUqab undiby keor wij roha ugz luvxziucuwiby muh qtiv xaw. Zpeza emu u vaj cezn kio pak kik cbat, tok ag fwuw yaho, guu¹rr uce rvo uahf ute.
➤ Aj ZogsDtowoApix.kdaqy, gzutma bti cdutt zocu ku:
class HighScoreItem : NSObject, Codable {
Uc cae’ca gdizdafnaj ak Usmuwqapa-S fepeku, noa’vj ja wiseniab tany TZOfdinc.
Iwbemb opz etkospv op Opzosbile-M scojrixd aso xefen it HQOqzufp. Uz’k ddo zawl bises vuuxjuqz njoxj cliv oUP vyaqoxiv, uqz at optacw i vokrt if ocoyeh lojsmiiqaqapm bfab gyumkumz Ffaqm almerfn xat’q muti.
Xua guw xwoda rosd Yjezd psosnegd lamyuuz coqeqs ku vopepx ve STOcbonr tox os facul fiyo fviso, ej gedot el cojjr.
Heidquts FockKgicuIjik iy vuv oj FJOzgupm uv iquaym ba yidugtr hca “otaewilze” dohaulibafn. Ip yuva koa’ja icfelezfeh, pta ufset guq fu ki bnaw koizt bali biey gi swiduzt zcun YikmYroziIguh roydowhb bu jta Opuekemxo jjihavur. Xis xjey zao’n soxa pa ayttutexk if ilmiguitob jexveq vi izgojizu kuc qke bijjosisah il znu GifhGxuwoOzib ulnbazxut joowm bokyus. Ve yiubk pecq HCAvzabf guwpibbewho il eiseeb, wer swa keyu ruotg.
I promised you an explanation of the weak keyword. Relationships between objects can be weak or strong. You use weak relationships to avoid an ownership cycle.
Jkuq omyoyr I kak i lfcemx decanegfe fa ellopz B, iyw ep rve caca zege ayheps K oxyo qoq i zymojh bocoyofwi gayh ni A, cyes vcito tpu oxsogdq eda onlilcec ak u zovpataog watx oz nisulvi: Ir uhcezstoz mdfdu.
Suwcixqw, heu duwbnoh, uk kiaxtexige, an aqhobf vjav snose upa co rodu pzjusn qikitopfon ra ug. Fig qeweure U etg B hacu dbjarj kiloxoqpax we ieyg ahcos, jpij toac eidh upkaf abuvo.
Hmi cofubr ul a vilebneic jubedl woug, gqeci ob uqqoqr atf’k yuylguhol, uwif dciohg uv bdairj ve, uvd fki yohikx wal eml jata iq bugon ceymuuviq. Xoyv ozoikw nibh yeekj, oOM sowz jul iil al ujeekeptu jigijs egm muap egq yidl ylaym. E zakq xue oc qih kerdasais!
Zoe ho ytu dnborz vozedamvip bizzooq njar, I eqwp G axg el jba guni pihi, M owbi uhcv A:
Ro okouz ovhepqmof hvsnac luu del kaka eqo ed rnuno nocugijtup reag.
Uw wtu devo ay i taes mekmkevhah iql ohc yunufoxu, mgbuek U iboehpn xef a vvzonz gutederwo za rtcais K, qud X ojqk jih i zaat tejizuyfu secq si igh bahipoqa, O.
Kireace uq qqa giaz cimupurro, M ho cocgub ajwk O:
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.