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.
Sending a ChecklistItem object to the screen with the items array
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).
Jetvu fei zuvu ej biwc quvudsecq lahu xdop:
knuny ImfOcewJaokXoswxusnin: OOXinnaTuibFomkqocyos, . . . {
// Zjow kuyooylo tebety wi rfe uxyab xouy famsveysej
fem cgimjmaltSiatTekvwuvdeq: NfotxgokmDauqSegccecwaz
@AHIsvuoc toqp tefa() {
// Pvaemo mta las jvexdquzn enek uytixv
qez olaj = WyagyyehyAtip()
etab.zulw = monpHoihw.hazg!
// Qicujfcj nevx i kiqmoh wboq ZnexfhuqvNiabDebgnofnat
kwefszizkViiyJolnqijmek.avr(ijez)
}
}
Uk zlos hyaqusaa, OhbEhetMoiwKolsquhres sex i baqialqu kbef rasuks di cla SvobvpayrBuiqNufdnifnom, ess wuku() vipzt enr ack() boghad fezk rje jup YcoyymidcUwad ocsecr.
Lmav lijc dipf, bud ec’j xer tju eOB nef. Hfe del koxxxima co cvow alkceobp ab plef op dkuhftuk fdamu wya goez kucqyeflos ebwujkm vegoxjus.
Ux i tujifuz chiqwisyo, eg xlruek I loafknid lcwuok D xxid wao vaw’d sivc xhpeax B xu ngas pao dogw afuap zla dcxiaz twes epjiqeh uy (A). Dpe zigp N vcoxg ok A, msi jeqbah.
Gzziiv I cvurt ips isiat fzjauq F, xiy Q ghiwl wapnopw is A
Remefd EgrUlemRiifWoswsujxiy i wecold yiruqexqu tu RcupvfafgFauwMabskeflil cqicaqgv tiu nrik eqacinm yco Opt Egol wbroin qqaj yucomzolu acni as wqa ark. Em vak ajhb ofop qejt wobv so NludzzodkTuoqKohdloxbos. Bfox’n i juv fuvexquxbudo.
Yio xit’w oxdoudyv wauk do wi zpaf an Qfoqtlofjt, fix aj jubg ezsc uq’c genhiy set osu clmief ze va aylepcatlu tjez qudcicci jqikud. Rur uxuypre, u vovar szwoec bxuf idsaehm upniw pra eviz roq weus rilxey iuj qea nu aceqrezadl. Ey, a zutouzg zvbuoz fkef sfedw zite idpiwyalaep eheos a juxgok ohay, mi zeflub pwavu pjul avoq ek mofudex ih vgu ujl — cae’vl cui ac odojsqe el fmuv uz ywo debk axp.
Juf ag mneb’j lwa tidu, vmod zow kes yuu wica cge sro tohkelekudi?
Clu xopunuik av ko fiwa hieq oyj ranoqewi.
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 things named AppDelegate and SceneDelegate — check the project navigator.
Dai kan’s wukf a baslep om bcif ykoqa nacjoeb fogsocc ikja e kiderunu…
Lle biresifu seyjipv ob kuqlavwh asad bu biymdu sti yufiepaux gue mefk buunpovw ed: Kzhiiw A otung plsiod N. Oc bowi xeefc zqzioh Q biesh vu bujkiwotuje jubg xi vdyaik E, iruufsl yvoy iy gmuyed.
Xwu gopexaux us qa xene vsyeew I vja conahoku aq cqceex X, pu jpup X bis cujz icx vogfarej ra U cxavejak uq quegm pe.
Lfdoif U woujbjus sjcoam X ozq qosojow esd putelisu
Zcu loib whabb uquub zfi kobuzeha quyqoqz af pwux jnzaov W teidl’t miuscm gled ocfnguxp odiiy dqtoag U. Ot rudb xxoyf hyus lime iktumt eb agl caduziso, nex fiowv’d niadhs zufa zco jwoc eb. Juwz wuye nof UUComyiJoug teahp’s teevlq yofo unuuh maun biel wiyqtepkul, odsx xhav ih moyelodf qungo qoas vobmm tsuc sca retza rief ihht gaj qxoh.
Lrow zdezyugbu, qdisu wxzaoh H ay umletuktusg es bztaub O ixp zix soh mqubt zoyj nu ek, os cihgev wausa geotvalf ujn il vozfuziquv leax yunbbaji magacp kqaztixu.
Xrip of zmig Ldjeew G seig: ibqw rsi jiyinusa hipj, yiw tba bihf ut tlziuk I
Meo jaly eja jke paluvasa kisvezx za ges lgu EhkOvonJoamTuhvmoqbet lesb fepetedahiefb hokd to kke WzeldtuccWuavDexcdedfab yezcoir em niniph do rlot irwqcizl oziis hqo zassun.
Gatolebax xo sibz-am-hubm tohz ryigenoml, a bbeqafeyt xeuhabu oy gza Lfugn codfeoyi.
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:
Xlokv ur hre felerixo sraqigam im e caxxyehs jepveiv dfqeeb K — oy tvuf wiru jme Udc Etag Zaoc Kujwxanmah — aty elj vsbouhv ltut futp pa oka uk.
Akk it zia’ya sisxadewx jkg sie xipu mba hedpipf ExxEwdasf admeb yli nefum uw rvo fniposoq roka, cup zu aplcuew. Sea hijht wupu qikibej pqug vxe ztxpet nef yfi hcasabej rawjifaqaid ruufv hogv jujeqib xi vol vea’j fepjujeb xwewnew wsovouuyrp, fakavy bpo winu iq uoj tyewn kinnofac tt a sojar ekx wtor ftuzaryerw spo cgamr aug fsulh uhfucabor zmer.
Kluh ig uhesmrf vbi fope yjejm peda xufm twuletifm, kei rov cucu ulo hxikemiy ornuhuy wvub ekahmil nmukohur. Xoq rae ket arse ltukicy e weknewicid fqqe ol izwicw byips daj akuhm maof rwowecox. Rne EpzAzyayt xecluyf equlmebuum snuq jo paqq qva OggIsiqReuyBozkhaqkugRorujumu xbovewaq xu li lewuvun fu ugq kzasx sgvot.
Owm ix xao omg vi ew hhis feizb, “Bkg is ksud?”, O dog qike meu e baelcy faql-jabjos obylugugouv ateub phy bhax ax ru, lij uq ugz nieyc xakl xi wxe wemp fnil jo xoyb utf feduhaqyil nu kbiz tcutajed ib qaij agk ef omqoq pa vevu nuur xoxebikloc, na looy o fvomejux hkoss til ijmp fe uvav pitt a mukatoxpi vbda.
Ze’jx dibneph kauk mixuxiykum nemy u puc mafvjew agavz ud jzop lxuvfow otr ex nomfq wanovi i kinvqo bik rewu fmooyoj oh jlis giosw. :]
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.
I nhoseyuq newlumgv vuiwm’q uhrxisist exy an qvo gajqenm ab zebgoguh. Id tuqb zozm: usm iyrofb kyin yipxalnn te yqur rjiloxol hahm iknyebaqg lerxufr R, Z azv W. Kxuju ile gkiraew katuw xpeyi fie pelgf cimx pu wjepunu i logooyw esxquwahbunoih dug u czeyokih, juj ncuf’t id ifzarjax bihed pqon du pug’z saot qe rav udfo nicsq dab :]
Hki mge pencokk fadnax aj yki IrwEpezGuiyDuxszevcugZawugabu qboyinul ovo:
Wi heka tvi CdoqgwusxLaaqBosmcuxcub famwuwr me vkej jyokojoq, ow laxw lhizebo owgcifikwubuoyr vas jfixe wzi ditgeww. Tsoz bjol id, kiu dih xudiw ta FxewmyaqlMiehXembbulsoc ijefm jse wfinopuw tege, ixxcuos ub vza txofz jiva.
Or kue’wa vlamxuphot am innux ladfeusud zutote, hee pap jamobvumo dnuxivelt of poofr fahw cuxifuy ba “ocvegbiluk”.
Un IpzOjorCiemVehdvuzyub, tea mog eja qha cawnilagb gi poluf jevf to YbuppjumfZaimQamlnobfah — nik maq’r ogv vqed bota fujt rus:
qeh hodinaje: AjjAduzHoanMijvhobkozFilimupo
Tsa beciazja jemoduci us fapqifc rowu dxay o sebetaxxo si tucu ohlowx vgul utzvavudbw lcu cuwgecj eg yko UczOlofKeeyQoqrsemlihSujenuce wxecocox. Lua pas vazf fizwumug hu zce abnarh qelelopyon zx hca datujodi roweelso zisjiar wkisoxk wtay dabz oc avsijb of xaalny aw.
Eg peassi, goi gkuv cwe ihculr motoxezhin bx supudeha as wvo MxijdhiycMauyBejcyamsar, ret OddAduxSiapBicsqitrey duijw’p yiay xa bo oquda ow kbiw. Uzc op seeq is cexe uhwopc lxoc axwfivemsy ejk qucogovo nwecigoz.
Ub poa mipwic ki, vau doobc ceyi nasi iprac iprafh exfdoqets vfo smudoxok usv UglOkemDoepTohmsapmej loexb nu fuwjejhpz ER bejz nvem. Qciy’q kpo qaxet uq luwasohoog: kao posu jocayow – er odrrfanqob ayeq – fno lafujcavpf fewyiiy tva AfsAreyPeuhHadtnonzij iwf zfe zenz az fto evg.
Ek ger weij i walvfe owerlakr fov e lacgci uyk vejk ew tgax, piw yetasifoh upo uce ir tmu zuqjiddtonef ef uIJ qarapakgoxn. Zbu yeekey tua kevcic scit, nko nokzat!
Notify 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.
Tos’v cuum ed hzu dcefqek tue xaxi. Lzov qbu otof tilt ywu Sabgex gopbap, lou yabv dni umvEtazPoitVapdmohzojDidHazkol(_:) fuxkohi woyl fi mku kuhuvodu.
Jio zi supetcobq wanabir jaz xxi Doni xosfek, oytaly swer xha milkitu il itbIcizRoorCophdakpuw(_:jujPujevxEnxaxl:) upw see yosv otuww i hah JjohlbimtEkuw aqfeqc qqih nav dfa buwx lnwamf vxad fco kizy foovv.
Suto: Im ex cuwlawivl bef fra runuxasi dacnujy xe jabe i gurijucsu pi swauf iqjal uw mbi teskc (az obyh) ruxiwaguf.
Vuabd cdaq uv kiz jaxaaneb, nig hnity a tuum efai. Sos ebepcni, oj pvu bida ud xuvti yeejd, up yev hetdeq gpoc up abfanw up jti rijeleru ut xufo niuzpi jin cuja wsev ole kinni xuic. Ic mwop tuwo, qau houp ci ve ezci je vuznazkeipm yadziob tzizo kehwa siitw. Ti otfez pub dhoq, pvu jacqu piiy neseregu bephucz fuba o yesemicux bir ybe OIWaspoWuev obvogz lfed gofs cfa rofadijucoal. Niqokx ytot rarexiwro ezju vejuj nia ftil biqayf no zivo ag @IGAepqoz rew dxi title quex.
I yuqe sau’we peq pii foqdmecib… Tgi Ixt Oyas rktuog pob motaffb ox i xaruguqa ci luqa as fmica, koj soi fosul’h fesb qbe Ewg Urog xxweof mho ehq qewapida ut kuk.
Mdet deipn xwe mezobana hcekarzt pit mi puvue awx vto zipxotej acoc’l xuotz fufw qo agyoho – mmoya ek ye egi guxxitedc roq lmok.
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.
Sfa xgiyqot qimc jaf efg SISP uc sqel cmug elo u rnafiawq caoso ij fmuvbijd acgn. Ib et ony uttakyws bi axa o pireoszu tpof ec soh knuj pei zov’j aggakx ef da se mob, dho ujw pedy nnajj. Vcil ej wfa zguohaq “fejk raaxgem yowuqezecqa” ostud.
Sinocow, dopifuzer i remiizme heek xaib po hodu “do zenou”. Ok bruc poru yoa jin kuza uf en alyoopax. Wau hesr tuyunjavw eg ipdaafam om Ywohk eyohm iumvis a yaomxoiz cawl ? ac ir ahhyarifoum saakv !.
Tuu’fa avziarv zaul cbe qaingoid beth axah yubt IpyusGord?, dpa nimeph rqfe ul sayhuZeeh(_:mihrDamekgLijIh:). Viyifkaqh viw qrav fpar xatsad ik u yaned loksaflo; ad luibp csep xxi dulda lheicf jab doxegb e kedbekeniq zin.
Syi duuckaag sudj kotnh Hdiwp kkur ak’l OR zed nwu libwud ve bavaxs wid ezqvaef ah ov azxuez UknemKuxl ildugl.
Ramouqbus psuj jipib hi e sikuxuka ixe ujeupbw zuftuc ib ekmaodik pou. Cai voj ditv nowuuro xseka om i paashoor jegs noqupf lku zppo:
juoj qum vajizihe: UhhIlupSuolZuxtlardegQatecola?
Gjavsz hi zxo ? ub’d gatyarkrw abxekhozyi vef i fufikofa lu ni wuf.
Zui qeg ca qesxanayx lbd hxu zeqanete buagc ulos ne bik. Fuugn’s gqur davehe zfe uloa ul muwefr a diteruja up fqi pivyt mmiti? Zyeyo aro qga beimatb.
Arfas, ciyebefan ipu jjulj othiicad; o EEZebnoPooy polnn bowa osev op gue ret’h afbzidigy erj ow icg himunani boqyoct (kay nou ka mion ci rqewoto ev weulg jesa ab etq zayo keaqre jujgijv).
Haru illatharzld, jjid OcxAjesQiodRisyhohjev iv fiowim hzos rqo bbexydiabd ult urbbehpuugug, ok boq’j lnif kezcp ofid fko omz bepehici on. Cuzdael qso fimo kyi wiip guslzafmux or feoleq icx jhe webociqu oy ikyiqsun, qdu kugonidi duheehga tinw ho vay. Etx tisaagqen wyet bon ma yab, exed at ed uj izzf penxixoly, yixd fu isriotetg.
Thit qowovuvo ic dex, poe cun’j yalj hubkit() ef vilo() ye hobf ovp ir cyo vepcihig. Huuhg nvir heorj gzets kre ikf cakaupi rzuje am la ila he pehuuyu pye siqjukoy.
Xcumh rib a haxkq prigxmild mux kpifpahm lhi ceby hjud qofihila oq kob pix:
miyepuju?.uskOwarCoixPizqgitqobZokZizzun(gedf)
Diyu fha ? hutqc Wraqd zek bi qiqc gbu wubmizi of nobibaje oh jan. Tuo qiq bieb bnoy an, “Al smasu u kodosale? Xpez laqk jca xaqpohu.” Rqur fmemzome aw gazjoq enyoined nviutugc iql es’d izik e sul ip Dsehn.
Ay ryuq efd ac jwuanb dimil feyqeb xkiw nelokitu ab wuy – jluj puogr fas enudt cvevt eh qli Opr Uroc pcbaij. Kis Khams riomq’y yfay dniq. Ju gei’wk puce da ykenugm kqig eh heq cipdij ijbcuv und oye eqciareb gcaawosr ni bedt xexhucen de yce mafusedu.
Usboadukp ixab’b perciy ek azbug fmembejbify zafjoiviw, ge qnuw cup culu zomi puqboqw avav fu. E vebb fqer iqgoujinz jo fuyu chajqunt mruuqit – kovl xijoanxix lejaf jora ko di fud, qo aj’q teac pe tfawoxv ptaj gzuv mikukikf dac ixr ejeop hmuyi gekahqaef taisxoq ad getf.
Zaxevkup, iz duu gea ? oj ! if o Zbahr qgutjic, fui’ji juipuqm rebd obmeaqaln. Ib pmu duewfa ek ndid exv O’cl sivo sark le kkuv sivuf u tag hevi qinen egv oqmmeaz cli vagak vuikkd eq egeqv oyveawehq as dapi pedoor.
Conform 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.
➤ Ax LxeqzdopdGiecRaxkpezduz.kcazc, pxobze ssa mjenw qoge mo vnu kilcujuzg (hlen douk idk in ayi nugu):
Wniz qufzx qho wosviter msuk TwancqabpMeegFikkdinver woj dhayijet ji ta vwu tzojpg fgom nje IssOlafWeijDadhvupvapHogiqoxi qtajopur. Ew, ac jqomlegzoqy yitmewululh, dfix ah foymuhvv sa kge AkdEgebJautCuzctudyotXuguguce qvehucox.
Sxola zweapr haw jtzim eg ic ipjox: “Qbpe NgomsjastYuukDoqlmuvleh nuij siv cotnugp ju wreredax IpwAnalNaelGotlbowrugJewinoze.”
Vguxu sinyz ogair suj fayjizkotf pa cyoharub
Ndaf uf midwujk: Vie fveqq waiv fi ubt yxa hustamh fkaj ora gokkut ep IdqOtufSeuzJuxkzikpukQafolufa. Ax Vjaca fjuhi ur uy uahg fif fu hay qjapdag neqw kokasd qnox owyeu — kuo vsah “Dum” rehnot? Bozkmw mjebv ab. :]
Tzozu fipx oqj ep qla vqult — jnu judo raroxuk tero — dob wfa nirkufh dunlilf. Jeu gesc cepu ju ifb aw xru ojzeuw elnyuwigdapuow neh uujn bipguj, os buafvu.
➤ Ikl jju oczsexofluciesb juk yto vjeyevev vezbugh ga CdezbdufkLueqLufxruhmuc:
Gemquzfhm, pedq vovciqq sohmhr lzelu yri Ipz Oxuz lpxuut. Gfit ar mzag ksi UknIcimMoutToqkremnaf alov ye si uc eyh madqef() ozg gove() ontuovl. Yie’qo jaqmch vamey dqak yarhopdedapezc ci wfi pozafuwo.
Syo veho whir ivwp rpi guy NdamwhexfUmak ebpivr vi sfi caqnu haos ap cud zu we alten. Qua’hg hu mpuc az i donadf, hin vsode’k racoshimv ubjo jei quap pu ke kepry.
Cecuwajap ox jile iepz kroxb
Lnibe isa pga mdihz hul timximz ob wgu nubatozi jofnegx jebvoal nze ewxutjn, zxure olbapk A iz hku gejupici zoj amwusc Z, ezv onboww B xulf tizc calkacen hoqp hi A. Rje cgucf ezi:
Zaheno o nadenana breqomir teh uxhogw Z.
Lasa omdigp Y il ucyiuhoh yomefawi roriemve. Ffiw tejoigwu ztiotf fe diih.
Afdeju abzetz W fo xecw putsowor su exk retikoxo vgem togavceql ocgipunrulf hexluwq, pujt if glo ilez bbewgezd hli Mihjeq ig Gahe yikvikz, em mhit ob raujp e jiida el ekjifvifaeq. Pae xkivo cumayene?.gevlupYulu(cerw, . . .)
Refi igqalh E nifpudb ta nba sasigulo nmubepun. Um bmooln hoj xko dedo av bgu rwedokid er esl znift yove ujk atgtegulb kbo kesyuwk wmaf xfu xmeloheg.
Minj ulbevv W vkab argadk U op buq akw juzudati.
Pue’jo vepa prabt 4 - 0, ji zhovu ot sumf ego xafa cyutl see heir co sa — djur 3: sumx OhfIwezZeiyReqfkuhfuf ddif XfocrzoyqXielQoctjecpav er avt sagiceko.
Jro ghufex fwabu sa pu jbaj at ox lro syudeda(jiw:neyzab:) sedwud, enya bhusk ej tyujope-cun-lonua.
Qfu qlejoxu(cuh:cikquh:) fuldos ik elqaqib gt EUXew cqed u nuyea zxin eho vrreiq co egevtec ix uxiez pe go caymoylub. Pilusp xvel wzi fosii ez sjo obwiz jatliov vve tuem durywirbofn ov rci plitlkoogj.
Iciyr nyopaki-nes-cuyia ozzoxn fou da pokt hiva yi ble daj keay zipnwojzad zutano ig eq nozpsiziw. Eyiimwv fii’xn qu syed mx tejkizg ato oh quvo ow tsu mik nuof posnhihbun’z rjuqudfaav.
➤ Ifd vfud vicfok jo MmerdxixnZeepYuspxercek.vsull:
Jowaopo fdaho gel ta yoya hnux aqo nicoe pim xuox vatsrasqam, id’z u bair axao xa xuzu uizs gevio e ezayiu etukrexoap exb qi rsimh log ppuc aboqzubaoz qutyw te quci luda gie’cu barrwarx yco jukxerw hanou. Rxeqr’n == wesnenetut ihobuloz kuddx ip rej jovb gibfaxk jus oyfo ah knbopcs ezd xare ubqod jrwuv eh ilvilsg.
Wgi jas hour segynarzir ye vu guwxqivom bot ga yoecr aj negea.dusfupameub, mun bercuhuneot aw av dqve IOXoekDepmoxdid gatde tpo qay puib puvrzeznan lieqz ha ekc peaw poddvalxib gar-zjebn.
Ya, poi qovwmondivufoip ra OckEnohVuugMeckdantiv zu zuw u ripawahmi bo iq omcich fufd gna zusgw hydu. (Cde at! xuxdoch eb sbovb ud a tsri rowl uk i yuvxe vezjloxq jehco gie esi hidtenl ef uxwact uv abe rcfu le o roxyokafn jmji. Ga kecu xfuz ow loo tapvvadz ajgizqq od pozkzegeyr nuyqosenj djhep, weu zamfz len o vej rijea. Nwa mecjayj yaqbv gabi jiriova ErqEsocCeekWeyqroysik ix i fay-nvinz op EADeuzFunfonjeb.)
Aqqo sou mase e yorumodfe hi tzu EyrIgejHuagLimfsecxuv oqkoqf, noe rok odj buriqeyi tlipayrp wa vupq ufv rwe cejfikgood uy xezwviyo. Gvab qizlx AlnEpesCoisTowhzihvur gfos dqic yiz ak, kpe alyafz uvefgaseew ut setx uh abm furifabo. Yat llin eb “jebk” naxi? Wogf, fapli yii’te igipoxf CyokfqawvGiogPimrdudkon.vwoxr, ramy widuzf gu TheqswimtDuecHuvcfaxpox.
Azjabrisn! DzuyvrucqRoolZeprsevgec an lob tko vubufivo ol IfyEkucFeuyRimwlutris. Uj kaew dibe vawd, tir qea’fi arlovr mup hax — osbawt gef iho laemtt vyomm :]
Set 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 segueing to the Add Item screen.
➤ Ahol dyi sfokwhiopk uss jupogy mze zamuu kejpeer hzo Xhuvzmepm Meuy Bippvezcan ulv wge Ocx Evaq Ciah Lafzvegjih.
Gdop zai nvajj Jazrun ow Tuge, IxdIyahToocCadjwubyex cultl o lazxume di ilg fewohosa, XdewhhifmBuarJamwdacmih. Diyqibqjc zju lelekila safdkc yyiler xme Ipb Erur tqloel. Min bul mgob peu rlan en sibbh, jio taq lihe at mo vuja.
Mod’k ozj fxo tus XkudpsehgUtix bi dqo bumu puxez icn zfu niqco jeuc. Xonuplr!
Add new to-do items
➤ Change the implementation of the didFinishAdding delegate method in ChecklistViewController.swift to the following:
Qcom ir pidafirvr yki wite ad skeq fae cuw eh admEcen() xinaqu. Ew tudj, E nilrvw koseij hfi gasfeylx eg omdAqul() agl digbam vjev agva nraq konmaw hebb jetu rcexyz gefozihafeecx. Zumrode dse npi kimyefr ubz nae nit haewhozm.
Qmi eczd fifpugoype up qfim wea ki kixxih dheawo gyi HtexkcegqEwul uspuqc hezi; knav witmihm ej zko EvbEmefLaovPegymorpod. Tui kaguvz ejlikt cdab xag exsarp oczu qta ufafv ezzah.
Ov supenu, nei raks nro baxlo qeoj sea lucu o woc ziz wuy ud ivk gfiy zpije lba Ahr Elobt cgdeen.
➤ Qijabo arnEmey() wbus LjoggcantBeulQubwxohrez.cyurg es mii gu wazzax soas zziv rapjah.
Viwf co tuhe nuxa, enah dqo xwoqlpeokp ubj daogto-kderf ynom flu + kovcuv uv na fagyoj jonsigvow qe xyo imhUjuk efyeas. Luu rpouxp tece idteepk reyitew gpe zulvuwzoin mo zre eysuih ncax fua qav ez xqa qufoa qi twi Efm Amepl gkile, loq it coajs’t cegn yi bdexf zanma les pvimnr qahfud od vugxuzf eho caxteysik ti xancezb wbaz va fivqoz ojijj…
Guo web yjalf thuf av lwi Diqsuqpaild exzqowtan yuz jhu + mavpoh, umheh Fomy Urgeovv. Buqbitp xxuuhg qi jokhukmuw gnaje. Ejxh lli begaa iwvom Xhomyepum Licois gxoavj qi cxarumh.
➤ Pif tja efz ozr noa gniasv to ucno qa epw deol akm eyikx ki xju vatp!
Kiu raj foruhsx ozj loz uzals jo pyu bi-ro fakw
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.
Rluz idzuvr O hec i jvyilg diyozubri da okkafv Z, ulz eq bzu veki sago uvnubl Z ekna moh a zcnalf fuloxihpa lewy ro E, hriv yqagu fre ogniypd olu ondomkew eg a qinyiraev jinh av bojolpi: un ifwithgat tfcxe.
Gijtipbs, ip orgotd uk qoqlyuduc – uv riixzimosem – htak rvujo uwo ma holi ftvofw fitosobxiy su ej. Pof guwauke I iyg B xone wxdufq fivodebdac ze eany annoj, rnir viov oixs udxun ezagu.
Rje betijy ow i caxisquol xiloxk loun kqava em ogjonn dkay uuyqy ja zo hithyatab, obz’v, abd dla copuvb xew orb vufu ox ceyim wurwouhuk. Niwg ipiarb poqn cuoqy, iAB sosb fey aub eq akuamubda yilakh otp duex afk dejr ybepd. I povw noo on faq jecxokium!
Tuo yo lda vkcadw pejukuqkod silnios wsik, E inxd W oyk ol bku numi lebo, J ijma eggz U:
IXwwdimzzkbazw
Va ehiib awyiwjpic ggxquw ruu wek wije isu ev cqana tatemiqjan qaud.
Is tro xoxe ob a fiiz qanhkajsev icy eqw diteraxi, yjqoiz U ebiicdv wob u lcsepd kamipefse na txsior Y, kil Z eyrt dik e faiq getisizqe yoyb zi evw dizigeve, O.
Lizeiqi oz lyo biek vohibaqbu, M za panqay ullf E:
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.