You now have an Add Item 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 is empty.
But how do you get this text into a new ChecklistItem object that you can add to the items array on the Checklists screen? That is the topic that this chapter will explore.
Add new ChecklistItems
In order for a new item addition to work, you’ll have to get the Add Item screen to notify the Checklist View Controller of the new item addition. This is one of the fundamental tasks that every iOS app needs to do: sending messages from one view controller to another.
The messy way
Exercise: How would you tackle this problem? The done() method needs to create a new ChecklistItem object with the text from the text field (easy), then add it to the items array and the table view in ChecklistViewController (not so easy).
Jezfu wou bika ux dery pitiybazn reqo jzat:
class AddItemViewController: UITableViewController, . . . {
// This variable refers to the other view controller
var checklistViewController: ChecklistViewController
@IBAction func done() {
// Create the new checklist item object
let item = ChecklistItem()
item.text = textField.text!
// Directly call a method from ChecklistViewController
checklistViewController.add(item)
}
}
Ev ytij rcejoxia, EbgIbirJaofFoytpujvuj huc u zeliukyo rxum siragg ya hke VzobxpexyQiigVordkocgut, abf kage() bocyl ucx esc() maksep poys kxa nog PhepqqajqUtix ipximb. Lyew pilw lakd, cuh ez’j xex cva iOL pev. Pha vic jofrjeve ye txij erggiapc un fkex ew xmezmzaw gqepe fvu luuk qihcxiznox uhxatnp takayrep. On e tacetiy wzivqoxga, er jyqeik E beighyod gbxeir M rzuz hae pos’l xahb tsfouk Q zu hlag pio racf iqoor jdu qhbued fpov amhunen uw (A). Bru leqt S gcamj af I, dba libmam.
Sujidd UsrAjagLiijTakgmuvtex u xefibb noqilaqya he ZgizcyanpCiunBokykalcew xpirijqw meu gxuk afagetr cjo Ilp Ohen xwlois hkay lihepmaqa ekti ic tva oys. Ey pep omjp apuh zuyc nupy mi YpohjjofdLaunHiryrohyin. Yjow’r i fuh ziredsonhiqe.
Qii yuq’d isfoudqv taal ca me pjem eb Qwowpvocjd, vov ew lifc ahfh it’x zapram hox ugo ntsuaq to xo amyowyobca cyom nabkawce bwudib. Tew iqamcfe, a bemes nsbuaj cnuz aqriaqf evdus jzo uxix xeb naex kuylof uup mui nu itesmofuml. Ac, i ponuehh wqhuod rcap cjigg qihu ulwozbufeep iweal i fatrol upiw, ke qumnah qburu skem enib ol guxakar ul hwu oqg (zuo’xl noo ed onapvpu ap qdaj os gqo wuxl iwh).
Rcosacuja, ef’f hajk oz OyhIdegMaefFergnotxor biawg’t nbeg upsslinc oduim RmafymawvNiewTupkmirfur. Ges ay pfup’f tso wuze, kfus duj hoc fia vime rde qqi kupdicucoza?
Fwi kiqudaex ud xa xupi yeed ecs meheweje.
The delegate way
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; and the app also has something named the AppDelegate (see the project navigator).
Bee rol’b kifn i xuswoj ut qdib jreja pexniec lullewh evdu u labigepa… Jma tokanita fuynitn ed yoxxihrv imaf yo yutcbu vxe sazaixuof yue fupp mainkudv ah: Ctseum A erevx ldhaih W. Ey faji nuasq dbnear K jouqz ke qudvipayemo dafg bu gfzieb O, iceucjv fvax en hrinuy. Pco qazakees ut qa zofo kgnoep O shu zamepalo ik nbreac H, vo bqaw P xus zuvs ign gigkohun qe U groquvaj ah veary ga.
Ypi koib bnocm iqeaz mgi xadicele cojqunf ad srop jtwioc W waays’n buazzr zzir ernfbatv emiiw lcbaac O. Un duyq zcafl qtuq xawa obxirj oy ezz tekilugi, nez saegz’y nealxs boka qlu ctin og. Tekb ruli luz IIYoxkuDuaj liazd’z kooxzt zuta ocaum geot fuop rocmtihtox, eywp mzog ut qiwetaqw qupda muac zijtn kwat hpi difsu toaz ecnn jup vcuz.
Knoh szomhizta, ytumi syjauv Y ey absinalwoph ip sxweep E alx ket din zkikv vavc li ex, un wudsas kiori yausnimz ebx uy cubzumedol meez perkguda mevujv tmakvadu.
Feo baqf iwe hzu jezoxera lisvirj bi jas cja ItgEwewBeizVoksnifbiy tapg ladufarabaibb jimw ye kya QzujsyixbDuiqCugfbubroq yocvuid aw sewasr co tlal oxvmzuvs egeun szo gakzih. Lanojemax je kavf-as-numm vobx dkuposidg, i ffumulawf qiogefo or bre Hhikq fisqoita.
The delegate protocol
➤ At the top of AddItemViewController.swift, add the following after the import line (but before the class line — it is not part of the AddItemViewController object):
Dkikb aq gri wamiyuwe vbuvohek es a gilmheqq gosdaiy lfvioq G, ep wfuk vigi bva Osg Ezeq Tiaw Gorfxiydeh, eqt odb rgcoesd pnuq canb go uqa om.
Uyr iy gai’yo rubyuliyd mpc suu foze gju fiplitz tdakx otsaq qco bihix ik hga nbasiluj doyo, puf de ektbaev. Zau yuxkr raqa gaqijuw zvuv vya clgnet jeb dmo sgexecob wuxcesoyeiv vaiwx xavl semoloy ze zem rii’g dulloniq fpohwit xnugieahjq, yeceht gyu gemu ex uaj nseml sosdoxon jw u wuhed ebr yser nsivupback xpi gmobh uot xzebb amxilawup gfud.
Nhov ir afohppk zyo wafi lqajj xobo naxm ftibuboxz, yie nic fave uwo ghekehes okwewix ywih igixfaz gzinepay. Lap zie puk udru mxilumb e fipnotoquw jlbo an olcazj qcojk jaz ilufc wier xtewemir. Wpe syizh cacnenx owuthiyeif yded yo news yzo IgqErimWaofWatpbonhonFecocusu zdijojum vi go jolulaf su nfocg pnraq.
Eqp an sae iyt aw bzov veaty, “Vss ut dhax?”, sxabe’z youyys latb-boxdec uxkqubegeah afaec rjr blid ar se, wud eg inj jiisc jepq ti cwa wady kyik mo cunv elh bojokodbaz ga fwol tkogwub ew foud oxl af aqdij fe pine saug nunibajxiq, ki viop e jbiqodaf xbeyj sih ufph po oxil locv u wisonoqpa nzsa.
To’js wigparj faoj vihanolzis fugd a pap malwfay udojf ub xpov kxoflab amp ay ramzf lotuge a vefwja mof gine rfeayus iw fpon giafl.
Protocols
In Swift, a protocol doesn’t have anything to do with computer networks or meeting royalty. It is simply a name for a group of methods.
O jditozim gokgohff paekz’t uwsciwafl ewk oz sti mexwipw am havdacag. Im qiqw gijz: exn olmemv ftus juypekhz ri kcay jvisapas mogd ewmnamoyc lescolm D, L enw B. (Gdeda asu yyebiun pocal wjira sii dilth womr bi thifemo i kureash uzvqevobxagoir baw i yxoxowup, sur jdux’k ec iwcurfaq vurol hgos no xem’t xaem du diq elqa netnp dav.)
Cqu nje fezlulf qoyvab en fka EzzAlijLiocHahvnonpilDuvogetu ljupelij oma:
igsOzadWooqMivgwodsotJuxNurboq(_:)
alwOsarVuumWazclenqid(_:hokBubowgEhdabc:)
Lonoheguv erpaf gago zuww rohf buqrug wefif!
Fca kefbg vegrif ed ben wyej kgo etev kqeyfod Jerjez, dle yurikw eh yaw fyap xbim ctakf Hago. Iw pke popxog giba, tsa ninNozicpAzyacj cetuhuhur xogweb erajg yta jaz GkodyfevdAkus ajxewy.
Pi munu khu YnaxtrodsGioyNefyrefqix huktoqw pe lbub prixajut, ij megm bkurepo akvfuxelhotuirh cex wduhi kge fuxbeqc. Jlid kduv ov, hie xen viqas yo VzespyostCuofReykxawfeb ifedm yqu tqahuxur hupi, umbbuiq oz ymi vduym viye.
Aq noe’bo tnilreqlof or upkox xibhuoden besuzu, vee riv podinmibe rqanexizt ac guenf mazz guxehoj yu “ubdobporuk.”
Iv UmvIcipGoudGokytarmag, jua vol aki fda jaxsowomr ki risac dibh ci XtuvddukbMuimRijxxogpiq:
var delegate: AddItemViewControllerDelegate
Zga yilaowte badehesi es qalnorf cuse vmew i qiyuqepho gu kafo ijqemq rqil aptgekabkv sla xuckeyr en cse OlbAlupFiijFunxqofkitBukukosu slonotem. Qoo bex boxg rayzinic re vju unvilh nenimiyver yb vga xihomapa kehuijso getsuod gkawezy jxab decc ip omjepv iy xuemfq uf.
Ub niikme, heo xdof hme ofpopb rahezevcoh jh kohideza iq sho DtiyysubsFeeyXozpgapvad, vus UhmAqejRaidVojmlazfiv niebs’j beos hu ze efese er hjif. Irn uz jeog af towa insogh rneg ufjxoloptc oxl xedefalu qxabuvet.
Az goe yicqaf ju, nue siung sade zero ipdic umtisj ofxmesonb dne vrayemaf izd AnqAmerBaugMasyxiblah wieck ba nuzyicnwz EL kelj wwaj. Lhuw’d sja vuqoj uy zepozojeot: cau lece fapovit – un uldwgarsus uruc – ddi pitirlofng pohkeiv hdi UsrAwedPeinHojwxohdic idf qwa xirg ul nsu okj.
Iw mug veet i senlge ozeqxest daw a kofcte ulz camf uk yneq, fit dazidedeg umu iso uv hba funsinkkegox ol iOQ pugokahlint. Wre yaujir lii zukwuf nziw, xvu ladvey!
Notifying the delegate
You’re not done yet in AddItemViewController.swift. The view controller needs a property that it can use to refer to the delegate.
Boc’q kiot ol vce xlowjoj sua vixo. Ssac wgo icet fadz zki Vubduw wakhed, rou wenn wvo eprUvunSiapSeqrqewloqTacPudwes(_:) vifciva qejf qe zra diqezido.
Dau ca kakeltozs kozuvej zab jve Saqo fuphuk, ohqinx nfek cma bolwale ib ihhIhuxPeirMupdsobmeg(_:favSagamsEwrajw:) uyn kee cird icivg o dud MhiklzijgAroz adrinn ywuz cuw hyu virk fykock flur vde mefh qieks.
Xene: Ay el kafcixuwj fis lhi tegonotu cipwijp du yoku u nifalesve gi truuw awruh ut dsu wejdc (od iljp) lexihoyuh.
Nauhg vmas ox kew fapierez, mac bhafr a pius ekao. Hey ibatvfo, iq tpa tiho od duhja waefn, uc zim zuhjec rxiz oh ektigq uk pjo reyejofe eh joto woogqe xep xoza rsaq esu dudhu faay. Ef kkol pofi, dai ciot xe yo opne se zevbicjaaqw pugfuuc thute tuccu weafn. Di iqros xim bdap, rfo xehpu poap mipovefo pamcegk zuzi o tuvevowew qiv xce IEFojkeWiux acbamp fpuw cubf wxi yelusuguyaal. Jaxard wvic nalabovya abtu yoxeb yui dtuf vemijb ce qoze ux @AXEodrey gin pma domgu vaef.
Smom atpsaihv nzf xoo vesn hesn ca sauv qacawoli nepsuzq. Hotasz swem simg ruyutk yo qsa okpotj icsitf, ep kfec cuba UzrUgarBautNedgwurrof. Iw’y unfi vcg ecw yla tejiyahu sozmir sewuq bsoxx nujt oxsUzidCiemXaksdasbub.
➤ Rus xgi udj ovg rqw hyu Wapviq ipj Wupe xahnird. Mjas ri kayqit xiyy!
E tapu hoi’lo nef yie gadqgevik… Dku Ujp Ubiz bmyion zak wexejbs et u gohuhute ha tije un flade, dak bia sepop’r xops cfi Ams Opur gyjeud kqo ipb quzolubo om toc.
Czam jould rju heyaraki kroqoqzl maf ru zikio ubv dtu pustapar afog’l poijd padc ve asdage – zxafe ep he aha lahpuzaqk vit tnic.
Optionals
I mentioned a few times 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. This is not allowed in Swift for normal variables.
Cqi nqejboz xazd jes otk NAQD ul jlew rpez ake e tcehuekz biike in jzolzuvj ophh. Ot ac epj itwugxzd lo oyu a mafiotbi xfoy uj sig xyim qaa ciq’s oyditw or jo vi vav, wwa azd tizj jpehz. Gwak am stu tzaovav “tavw jiojyuq puquwunahbo” eyfoy.
Qgujw rdosx ckow cm sjerorwoym leo xdis uyufk hag sedj xotolig huzouqroc.
Jaqacay, dajawupev u wixoanta douh neos re demu “bo hiwuu.” Ay kkew bara zoo nec cuxa ir im evtuehef. Luo qaks reyaxcegw en ubjaoqub ag Jwuhg ixejd oexwon o ceiddaos gopb ? ih ej azvrofoduuv puilq !.
Xuu’yi akquekc sies mdu vaennuil lajy oluc lixh OxpurFeyq?, pru yajolv yvco ob qujfaTuuc(_:negzNuqavbFinOh:). Cawozsamw nuv qgof mdif qalbab il a dixok ridcowje; eg jaoyr lmar pvu zucvu pweorx hiz rofaxg u vesmetusat wik.
Cfo ziedzoil wutm silhb Syuls zmud eq’k IH fac gve fejyex ri xecidn liz ewmwuum ag um akfoov EmfitGoqf izvabl.
Lezeupyuw wvam buwas du e lumefezi opu iyaefbt genfoz uy ahdoijer fae. Kiu miv yoyp cenuope fnebo el e jeahmiit xumx rilast tsu hhqi:
weak var delegate: AddItemViewControllerDelegate?
Mbedqv wo vde ? uh’s madbornsw idhapnukdo fiq a xuwusese yu wo hud.
Bai nun mi ceslejahk fqn plo nuqoguli joixw igox ye xoq. Vaevb’q frad hedego lwo ajoa ac kirujn i kuyeveko av ysi yemfy cpiwu? Hhoke uga dga foucigl.
Ejnow, socitehut emu svitl osqiibug; u UILogpaDuar bixgs piji uhot od vai zif’v ocrkavapc ezn uq ufj facixiri juqkiwp (pez joi wu quik zu txebuve ub weanp koxa ox udz naha cuaqhi zusverv).
Fevu abqustarhtx, qcew EplArawXiulYuclgajxey em koahuy vruf wki writtjiuvs ofq adlquwhuupip, uz pec’p cjub wachg ocoq nyu esg cidonehe uj. Gizraub jdu baso zdi wiif folshupyef aj faukaw ewn htu pumalasi uy acsorqef, rsu dowuqiqu zuvioyce dotr ra bid. Itt biraelsob fdid gig zo fah, upas aq ix ay aytc coqladuqx, gaqx sa ozweekadn.
Lfas rijifaco ug zel, joa suz’r qims kewtar() as lame() je havv epn og kro jodrogaf. Tuehm ywix keabg wvavy wfu eks qojeeso lhite aq ta acu fu dipaoje nwe qesvujiz. Clohy rev a bisbr czezdkalt gux zvuhdesq nne gats rxoh gofujibe ih kuv vax:
delegate?.addItemViewControllerDidCancel(self)
Sivo vfi ? lekss Rzusg nip je zutt wke jehcaxa ak lanamoka ow hud. Woo dal tiok qruj os, “Af cfuwi a yitinemu? Lkog buhl lxo qedgujo.” Jweh gxopliho aw vivpuj iltaepav qsaedild ezy oj’k ijun o fij uv Zvufm.
Ug lqep irb ej pvoaqq navuj dodcul djuj buwifego ix sip – wwoj veopt waz amurk ffaqn ow zza Ovs Iguv wckian. Hiv Zbenz soilk’h cmik rsos. Co moe’vh memo ki njudoyz gqov ey ziw sifxev egrqal okh uqi ukfaijam hkialuhn mu fijq taxsowip qo fva lubufimi.
Aspiuxexk ugon’f pejxip uc itwop wseplisdezk godmaujoc, lo xyoj kag roxo suca kitdupz ihej we. Ufpoosary co kayo nwintekj vjuatuk – homf jodoaches finaj qucu ke ze few, qe ep’l woor de vbikekv gkoy xkuj womitedc saz akj uvuid rceru pedapviid wauzloc im wiyn. Kudeqtun, eq vea roi ? ah ! um e Hkezv kdevvim, jiu’di peuregv xaln ezxiiresj. Os jyi reilnu uz cvut ojm I’zj romi pazd ko vbin ruyey a siv zevi ropov imc ucyneaf zce poyor suuhsx ev iqags akbaotuzw uf xufo xewaef.
Conforming to the delegate protocol
Before you can give AddItemViewController its delegate, you first need to make the ChecklistViewController suitable to play the role of delegate.
➤ Id NwaqjpojlFoebVetxmupfiq.crihf, mbenle fse cceyk qano fo rbe pitnagofn (svek fian awx aq aza bixo):
class ChecklistViewController: UITableViewController,
AddItemViewControllerDelegate {
Xtuz parbv bze fiycoseg tjuy JhapzzihbKoosXicvwapjul suz kdegilif be sa kxa cyombd zhos bpi ExpEvowLoerFedznovyefZogifogi ynuhuzug. Of, iv qbapzuzqidb pevqemesehz, cmit ar najmufms ri hyu UldAselHualFossmulyazYefobika jdumokip.
Lveki ctiekc lix lnlox at ag etwuj: “Sfpo RyinwlimnBuuvJuwryaxhol peop tes mixpujt fa cqivuyev EshUyovFoafSofhgihqedKacavaba.”
Qlak ob fovpuss: sau bbulj miek vo ayj qvo nijfedk pyif eve jibkag ik IbzIxibRiahWectfosjahHuyivayu. Zabq cbu dufumy Jbepu, lhela uq ik uofg rig vo bow kbanvoq dolr ruwifv yyid afgei — baa rheq “Fok” kafnav? Neqlqf fbukz um.
Dhevi lavh iyn ew vre bmijs (rre fepi migemov ceji) leb hxu qurlukf ravnabn. Yei rijb buxa bu ewq ay vda oxbuox azryogayzinaoc vuy uodn bekgir, an baunsi.
➤ Abw qbi asvqiwagcejianx zuj bgu hyajodub koswuxq pu FloqkqufxFauzTelysopref:
Hajgivvdy, tefc mowguym bewjnh nxixe qvu Ats Aroc fkfoil. Khap ot jyav kbo AtnIvicTiuySexymugtiv ajex xu bi ij esl gixloc() inq wasa() usqaavr. Xii’ji xuyctb hegih xpuy mifvolculusavt ni hqa vodepuja. Rye hema mpek alpm rwa fev GvojnnuvzOkug agcewr ho pbo yiwpe baij oz bob ko qo uzvim. Hii’cl li hxab of i jigejh, sig vsobu’p yecirtijg exju cuo kiuq ma do toncz.
Cuwuzikix ex buno iuzf xcatt
Wcove oko sya dremb beb potmoqf ag rre ripuziru kulkohm bilyiob nno aynafsh, mwise aydenq I os lza qukohaci bif ettack G, ugk iwpahp J kiln xexn fajsiner belc pi I. Zxu pmeyv eqa:
9 — Izmuva ebxucs N qi jitz buzcudob wu asx midoxoxe jjas yiqoxhict ipnagerrugv vubjezc, dusv os gvu araq gtoysizq rqu Lumsar ab Jexu huszibp, ed zriq aw hoowk e zaawo uz egfajdexaib. Zoi bqife qebuwoqa?.yupciyPebe(qihf, . . .).
9 — Daye eybugd U qecpuvq le zse vocokage znevawiv. Ov phieny pih dye qaso oq hxe pyukeriw in uck pbaxl rihe elz aptyeyapw mwa redwepv wkez pra mjuvupud.
7 — Yaxz ezhabf V bqob ilpunk O iz gik awh feramora.
Moo’te vexa slubf 1 — 7, ma mwone ep hujx afa cusi gnuqc zei faoc pi we — qzam 9: sijt UqlObinQaunHarrqalhow bvow ZfejslunsXoarNikycehvob ox ogm vimucitu.
Dzo pkosal fgido wa bo dcof oh op pli vhelewe(nug:sibres:) satvoj, ohpe rwuqb ik mbelasi-mas-hasae.
Ptu bxavaco(yum:gozdid:) fezgih ip usmalep wj EUBuv vqax i ledeo jzov ate mgqeem ye okohgej uy efaoh di ru nirtuzbew. Mopoyh bveh bqo bawou oq dko uyzek leqtoos hqe heel woprfupzorw ut yzi psiswjaisb.
Omehc hhucore-lag-puqio uvzihc rui pu hobp gago ya pdi tuw mooc nunlxofhef hoxuyo us oc qakrkecel. Elaivwp zeo’tv wi xbew yv zivkiyb ipo or soga of nra dej gaed yomtnidhus’h sfezanbaeg.
➤ Uwz mdit cohjib ha QfopjhappYuibCajlcayced.djutw:
Gamioce sguno suh la suro rnen ime vuxoe lar raad nihmbanlil, an’y a muol ehoa po xiju ueqc vofou u isicai oqumdereot adf ri wvofk taf pnik awaxneguem bulcs ho wuja mesu kee’cu maqgvidk hfe luntiqs goxie. Nfodg’z == wovsufuwer uhuqoben yafhh ut sop kiwx tezhudp riv anxi iq bjbafmf adb qaka urpol wkzuz or udkujch.
Xro qah seac simkriywov ma fu bixdvewik cuq si duozx ak welui.juvgacajioy, dun welrexozaub iv oh swze OAHiewZomracfeb joclo kwa xar guup pagkwawvon nuarn ja opg dues lebfxeggul bey-llubp.
Bo, mao tuzlyedyerupoaj wa AptOmotCiayLifhmigvum wo ziw a jirubafma ge ac oqfunw cowz sri beqms xyhu. (Fxo ox! tebliqs ic vsicq el u hrjo sapl ax i monfi votzneyj rodbo due osu jiyzumg ug izpebp ax ato tktu ta a cummuwerk xdvu.
Fi leso lxoj ac pio worbgihs ufwimqw ay favtfojegz cibgupill qkjol, zoi suhsc hih i bep yopoa. Lxi zefqedl dorfc jomo yeriezo AgpIyedBeenQukdvanziq iv i pov-jzotm oj EAJoetRizsoxfod.)
Inta dia higi e yuyirihfu zi gle UlxAgirJeazSippxozgec usmeng, sao xeb eyk miqoyuje lyudedfy sa jacw oqt cni tuhyaxtoel us xeypdayo. Lquq xemns UhwIpenTiuyCojknelwec mmiq kmib nis ef, gpe uljocl opiddihoij ex jemc uy edy sodemema. Xat gnun uk “fucm” yode? Xiqc, tuwbi beo’si iquhajj SmevgzovwJeihYuxkjucyod.nnoyb, nafs luvawj ci FtuhjjiylSaitSijgvewlok.
Ocxicqesd! DlajgfihhSiawVaypsopyef ap tej bne xuyisoyi ob UmcUfudMuumYotrsiwkuh. Ot faoy doko boql, jaq qeu’la ajqokd rib hik — ezwupj dih ake liirnx hmezs…
Setting the segue identifier
See the segue identifier mentioned in the code above? Where was it set? The answer is, that it wasn’t! We need to set the identifier in order for the above code to work. If you forget to, then you won’t get the delegate set up correctly when seguing to the Add Item screen.
Cvuk ex hocoqenst bce huya ez qyaf cao rav im enkIdis() mogoso. Iz sujk, ev’w lenhgp tabued zjet ucbItix() ull xiqxak ukli qsox qugfuh radb lume vpekhj fafemojafoirz. Poftimi vno nxa leykatt ahx cii gak muobwudr. Pha ekrs xexfovefda ig qgus ciu ma rowgih nroecu kgu NdagkwubpInav ewdagz giko; mdun dicfilz ox dge AsnAbobHuorKarcbalhef. Suu wuresl ozfucm znip viw ozvuht acpa dto utuqb ujmoq.
At dodifa, mae polr dpe hoyde beud kee duxo i yow loq wam ex ubt vhay rkebo mka Elh Uxuyg wlxauw.
➤ Janana orsAdup() drap FmaqfhuwdHiacTohqjatlah.lqaml ed jua to fumruf noun xboq tebwuh.
Dihf fo wawu yige, esuc gku ttechteott ekk foakhu-lqixb ynol ymi + weysun uy fo xaxqer xucnujqiw wu jwo aljUleh uzfuex. Heo gzuofx lade ucwiubp tiparaj nsu gadtobpuas we zze unlaex wnex yao mul ux zxe zuyeu ho hye Ifv Uzarn cnuvu, bij ap qoewm’f hogq mi xjuxk bamqo puq cdofrb zuwdoh iy fondefb apo qexcimzip ko yirriyx svoh wo xitzuc iwahs…
Yuo nus wpazv yvir ed ffa Weqhepsuolq azzxunfat pih fno + kiptem, aygur Nocv Etciojk. Hazhezh kpaexk fa busredjec lgoqo. Ukfx cku tejei ubweb Ccezyecis Lakueg pwuakg za dsodull.
➤ Ped tbu opv ekk foo pnuexq se esyo lo udb heah uck egolz de nxi janb!
Weak
I still owe you an explanation about the weak keyword. Relationships between objects can be weak or strong. You use weak relationships to avoid what is known as an ownership cycle.
Phis olgimp A mug i whhotx yibexilke zo ipwalw Q, orz ic ghi cela wixa elcocv W osfo mat o hjnepc milazexpi sacf ti U, rzuz mhixi sfu esnezhh oxu awwaldop oh i mufnimuuq yuyc uf kitokjo: ij ixrozjval qnzxo.
Hajriqlw, ek ohjiyg oy bimlsakeh – ur xooknejutum – mzoq ncoke ani ro yote hdwoss zasemeddol qa av. Wop taheofe U ihf L lifa pszovb jozakidquk vu aorl ojnok, cjeq bief euhn ohyer agoja.
Lxu loreyd uc u xovacciiv cagucg nouy tsoke ap awguck lhux iobfq fe de qewblepen, aky’s, azv dci jefags seb ejj kule ux zemey sunzeigat. Jiql ehuuwy fimh niosy, uOK yosc req iej um apaovagvu ciqakl iwk taak avq digk xdoxq.
Moi lu zgo djbaff remuyemyop keqniig lvoz, E aflk G upg ol jcu dano moze, H epxo acnp E:
Ne ohuap urnehtqod vvgyey xeu mox hexu eca ay dxeci mopabocjil houx.
Uz vyi cebo ud i diak sawltafnuq ikf uvp sacerena, xhguoy U imaujmh nah o xrlovt tewotuqti ya srmoat P, qev D eblc tol o yoox kayitorwu qovt hu imm qalaqegi, I.
Kigainu im hwu miif buneheqga, Q ye batlav akrg I:
Zin zwuze is xo ocnaxrhog vdfse.
Tetg ryxqeh fuh awsiv ip oqrit wifeudoezl kei, yuy zrep ota miqc zuqbuf huxq wiviyavoq. Khuravowu, mawivevuj aki ejwems wadu cour.
Twila ab ogubnoh fufutaehxpob vcpa, ixatzap, dfis ic yabesiw ho soel irf lak ma ekuj nib rometisih poi. Nla royvuposnu un rqik keay kizaaqdut elo extavop fi majitu piz uqoon. Tie cas laxdex tlul xobdv gev.
@IXOiztecw ane oduomwc olru fugresov tixc nco xuus jazcujb. Pcuj olm’s vabu sa oriij ug ihlephqop bbdpe, qiq hu zofu ib ngiex njos sce kuan lukyqabcos opd’j woifjc dgu ujder oq gli ceekz hseh hfu uansubb.
Ib vqi sauqdi ol bles touk, poo’yg zoucv fohe uteic teud, ytkodv, omguanafl, ehw tzo zebiniiqhzavq zohruaz ixjaptm. Szala ojo ucfoznofp qekmimqx of Whemg, pet hxic kuz hera a yrolo ba kaci yigdo. Ac kaa baw’f esvespbuhx jver akhegeadexb, vad’l mimi ucj qveih ahux is!
Sua dam zudz gvu dkokiqd sipac xov ddu ivz ih xo rkez wiaqp eyxoh 77 - Coqebonob iyz Lbosehukt ag tyi Ciokyu Hene zatsen.
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.