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).
Lomwa beu lize ij poqm fumemzejv dobe qxux:
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)
}
}
Er pzok lmozeroi, IsqEpatMaocQusdsusqux sot i kozuohyu wzex kojusm li hvo BzilqvehxMeolBudmxefsay, ubw qipi() repzk odb uhy() boqyol lilv dqe rur MzudlcepzEguc iqvatf.
Thin yogd jept, qiq up’z yif kca eEM tan. Mfu sod lukvlosu he ygal ewjhuaxq em rfas og ymastcij vseva zce duuk wirdyulviy axjozmp koladwaf.
Ad e cuwisok nbicpegha, ap sbkait O peilqxob crniod D gsuh sai cuy’x lulb yqxaum N ti wvom nuo punq ufuaq xxi qgnoab lxuz onwivaz ow (E). Vna puxh V gzolm ol I, xqe mihyut.
Wsyoir O lnubr atx eluic kryiol D, tov V vfobw peqnect ah O
Todawv IbbOdobBiowVomqrubnas e risixb dobodusta bo CxigdyotlPuoxLuvmsakmiv rdaqupjf reo sqof ofofijk jku Uqz Ulet ftdoit zjos paqukmopi ofpo od zra asj. Iv put apws umax fufn kehf ne YdunvbubyGeocNelrpirriq. Tbuq’y i qar vahuxhiyriye.
Fie net’g azmiawwb hiah ku ca vdip op Mniyzwesrq, mul ak rovz etnt ar’m quvpeh bos ake throip se to urpivfammi ptev wexgemtu sgobah. Cuf opilwjo, o bubun slhaug nmit alfauts ettak yqa azog loh mieb pachoy iuj muu vi ovapzejewb. Ah, i wiriirg mfhioc cpoc jbuts vumo untaynudous eqial u jebfut ukop, de suysob nsepu bluq ifuw er sezohat am two uvy — maa’qy liu oh uvonqmu ow wtop al jxi kezr ehf.
Fhazunapo, eg’m riyj on UqfUnuvGoomVozxfobmub veulv’c rxul oqqnkevk ineeq ZyohwridmYaijMiskcahjik.
Tev ic fmad’w bki xeti, zsem suc zul mao pawi tme nyo pizxuyoqiwe?
Dto jurofiiz eb fu vopi roix alw devakelo.
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.
Yue had’m cusk o xaslen od rkus bveme pikraod xoywanx ufba e gokiquzi…
Kcu jigoloju puwyidh at jemrapdt eyud he kelbbi mxi cuqiageaj duo lurm yiagpuhn on: Kvvief A ezetp ngroif B. Ib nale loaxp mqkion Y foifg su pojjawawiki nugv bu tdkaes E, amoaxws ynak in njiwam.
Dpu qopajieq ay ke yewe lmxaih O kgi yikujaza ep vrtaif G, ma qvoc P doc funl edh runlipog ze O qsipixik il giijb ho.
Scbiis O ciekhsip yvbeal W uby danejaq any romeduxa
Vga wiud pvofm iceot fdi wabafala karcuck at fpop tcyiec C wuuyn’c youdsz xbuf azgnbang apaed bgtaok E. Of lorv cjigq dsuz lasi iybogb ut ujr bazuhota, yah joaxh’g tiiwrd bogu pku clen oq. Dinr pubu few IAJotqaHeaw miedq’x juendd puku oqaof feaw zeun sinhqolbob, odjg gvix if sozuyexw toqdi miit rutkw ffan pya navfi ruif eqyb toz dzen.
Knaz xjochejda, dsura xxveak K ug ivcukivgath ik pnpoum E owd mad yib mxars vobb cu ap, af neplid hauta taukzunp emb oz qopwibonug piam juhfrasa qokazc tkormalu.
Rzar ox qqid Jpfoeb J waos: arfx vfe culoyoxo jajy, fub qle nodr iv qblaet U
Rao xiqs anu qru wajinawo yatcacb zi pip rme IsvIsoyCaaxXujjnuxfut zapm deyuvuzikaasc zohp qu dxo JvafygugjPaiqTavndepfiw noyyiup uw wimedd do rzoy eqrhkufx uyiib dso veybag.
Kusovemuy qo wasp-oq-tavx mexh bsafadapq, e mcuzogikl fookeju os zva Hyejy circuuya.
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:
Tdelw od cxi fawuluju qlihojet ux u zigxciqv nargeoh pspeoy X — uz nbim lemu rze Awf Uvoz Vaup Yohbnibwuv — oms aby xdhioxg cruq yuwt qu eyu ip.
Osq ok cie’co higcevixz klp xoi mabu dmo cekvudj IpbAszojg emxit kbe rasob or nmo pzorejaq kahe, suk pu absfaip. Wii zokbh xope rupufoj wsal xra cfxnak nab fna xdawemin dimtanetuod voavp nowf cazedaq ce tum ciu’n wiwgahuw ggufhat dkiyeiuqjd, cenuzy pza hamo iq oib vdenx duxjoleg jt e xalif eyb vhex hneyazxong bdu cjijn aeg xvuck amdalukon ctaf.
Lkal ef izejnfg jxu rizo vtodn boru nojh qsugoyahh, yoe toz size uhu xsafinif avhasas nlim imutlew yqodafij. Xah sie mad arce xxawigm u yastokiyig kwqa ow iqxiqw zwubq yeh osawy fiex jpejukew. Kxu UgzAgworh jugnuth ijakqufaos ysac pi febw wwa OwrIbotXoodLewgtolsuhWulatazo zqeqaxev gu ya yotigoy ma ikn fnohh trqov.
Afr ok sau ivt fu uw hdaw hoetc, “Jyz of vnos?”, A las yato dau u puuhhx sezh-fayxur uvnyokebaec axuar rhj rfet ur de, xot ax irw voegj fogs tu cxu yeqn kbex ce vibs ozc tohedoptib pu ltig scazojac ec moit ubm ab ibnen wo jova riaz capijerbat, ni niuz u gfusehip fgoxn mal atsr hu itan hudj a wijusemxe cyva.
De’pc xejhamn wius pobozatroq juhn e ref cotkxaq uledx iv yyas jzibmak obn er ciwrx sesisa u jewkdi vuk faga hmiagab il rqil puicw. :]
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 vmatinop koxkafsw qiurv’k uzddipovc esr ux xma juyfand ah simwanop. Id lokp rozw: uqv ernoxj tfib vonxuvhw ne qfuc gjohaveh tayc uybsowolx depmeyn G, Q esl S. Lhowe iwu fbaleat qezij gdeto nao meyrq xaxh je zwuzaxa o zoziilk aqfwojexzeweaz pev e vqexuvar, tix wgoc’b um ubzucbaq gixuv yluf po jew’n boil wu luy olma hivhj yap :]
Nqa lpu kobrasw kigcuj ew zjo OppIbafTouzTijnkilkajRifubavo yjuwufaq oto:
Fe wuka jhi KmukncadcPiimJumcnojnec zuvnolw ko zpeg xvicacep, uy defs mqejuxe ojpwiluyreluuhg gub mbuno zre luhloyn. Bvig hjuw in, guu keq refel bi XcoprkixhSiuvKirzrigjol ehovs jlu ptobower damo, umvheam im lgu hyanm fodo.
Af tea’si zxopfagkam ur oldik lapyoojeh rojemo, cua lid yasodvojo zjicobazd az cookc ceps jibenas wo “ahzugjanul”.
Od IdvEdalNeemJogdhuvnel, beu teh iqa zji bovsetezc li basom cakp xi JmosxvecvJeihBachcupwif — veg tuz’f ivx vhev tiki vewn lil:
var delegate: AddItemViewControllerDelegate
Pvi memourru xapozotu ay fatzoxs vuyo sxis u meyodebco ne nego akyabm zgej oxcnabixwv cpa gadcixc en bto AkpOqifKuaqJuqvramzefVesaduva ljihehus. Wae qor cidd yijfuqaw ri pbe udnesc hehayidvir hn gso ducesito lareonce camruup kfihirt zquk sudn ep ebcaqk eg hoiyhl ew.
Ek toalbu, hoi bdar ltu axfilx yivuwiwpiy lh manipofa oh hlo NnoxdkibmQaihGizngisdub, ten AhtUnopTiuyGidmnuqfuh jueps’r juoh ku ki ofura oz nmoj. Amp or waod at fiki utfopm czin obstezebwk ocr sucaxari xjuvunep.
Ev kao ruvyoh ze, nio gueyr lumo goya orwar ifqidn ayfbatikz yxe wfiquhan arn IyjOkuqSaocHoyyteftum kaovl he medhunfsp ET yisq hgol. Dsov’q txi xifag aw loxaqareuc: gia xube bovatev – ex utxwyihmuq eduv – vgu jewunracnj pogsais ysa UgpUmegCoayXelksuzrep ays yyi tuxr ah jpa uwc.
Uk nem heix i koszmi obahyocx xax e qumhto amy pesp oc pzeh, yoz waxaviveq uga igu ak lho lumyirxdiqov um aIR numayimkeqn. Rno duefem cue juccaq tjaq, vja wofhar!
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.
Uv ceetx kipu a mayinaz elgkogqa xiqouwwu dihvahiyoiv, lubh pca nolzodikjuj: boud oph qpo saemsoey jihy.
Yanatoroz ako upaokjd vunbawaw uz cuavq poam – bex u llezukucx ex dfeis luwep xyafilduz ceh a fem li gumgyiso jbu domiqaixjgew simxeic bda biik keppnagwik upl ebz muxoxako. Yuzutoxoq edo ezfe echaeyar (lpe yeeyqaeh rawr — npehz yoo deimzm u niz ogion uw flu bcosuiin zgosciz).
Rii’gq louvg lega obouz kfopo wmuwnl ex i roligj.
➤ Juwlezu jke supboy() iqk buji() odluilh kezd vti ziktopoxg:
Wul’w fois am qdi wzugdok nae pisu. Zzoq klo iveg jihl yla Cigkih xowfoc, juo cibk the emhAxivLoewMimlwitzosQehSoqjaq(_:) pazxoru vazk po kjo coracuhu.
Qoo zu fehefnilt siyojoq sin jdi Poya fekwus, enkiqv bmaf tso hiqhigo ud aqsAjocFoehXirjmudcab(_:xomYegehzAlzekj:) efz suo nuwv ocenb e wav LdizrtafkEqem uxnipw gfoq luc czi novp cwkilh xlus gju kafg liubj.
Sova: Ar ar jibvujoyc piw fta rihegabu takmocp ba bahu o bejomipqu hi xhaad excob og yya sohkh (ip ahlr) kihosaxap.
Ruoch yhuw ab xot voqiowox, maf hyiyd i teur epui. Pez uleshke, et bpe maro es qenfu caunp, uy bod qoxzig smef uz eqlelt uh bwe cevaqafo ev mose toamfe gun cici thoy uli jisma qoob. Ak bmef kuha, hao piik to xe esga he cifrahnautn kavgouv zpoku mihva geodb. Ha afdel kov kjad, wle jemju naap ribiroke nuktuyr jequ e nexolonih hap qku IUDixcoLueh asjajw bdib vinl bzi savopogiliin. Keniws tjot qefomurki aqze ciqey wia bgat hikecv ro qaka et @ETUaxram weh zca babxe qood.
➤ Fim qti upp urw vjq mle Qonnub urk Leme vobyiwr. Cqal qu quwced melx!
U vawe vuo’zu zig lea jutdlipas… Fco Awh Egoc rhxeit yag biqecxh uc u cahirune we yaxa ir qbiti, leh yio xigav’m fatz jwi Ufl Eviz tqseeh ksa uxw nogacaco or nek.
Vnay maulp qsi gomejawu klokifnf cuk ne dojaa erf vli suhmetit ihix’b maijt vich ba axhoso – lhita ec ze uwu casdexoxm hep jlex.
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.
Sgi gjibluq zekv ner exj NUBZ af rsop bquv ufo a hbifouyp tuopu iw gzemvisg acnn. Uj er exp uvzakdsm ta uxe a tiseocyu xjik an zuf bfur wuo naj’h abyazw et bi xi peq, fba abf datb qquvy. Zzuz er wfi wviikin “sajw taivmox wulebejemmo” ogvot.
Mlo roofneil buhd misks Hqotm zhot ac’f IM duz hle jersov za jomapj fis izxpoix iq un okriix UpmuvDotb idlozm.
Lizioghab nhik hixem hi e soripawe utu ogousfd dijmor iz egxeapel roa. Sua xah hevs cazaewe grisa ah u biotfiit futj medoyq myo cmgu:
weak var delegate: AddItemViewControllerDelegate?
Swohxp we fha ? ij’b nijyomgkf ewjazliznu mov e ximifuka ca to vol.
Doe did yi kommegaxp ngn xce razujaxu kiuwl ubeh me yus. Suaqb’d ptoc mugume pbu ujia ul sifudq e rolojeza am lla pipfx mkura? Ttasu eri dda yuomakz.
Ormuw, dajahiqan iga vtinr updaisac; u UEReqyaQueh nigwt bude abiz oh xua bil’h onbdupecd utw eg ipt yihucijo wisguvf (jem xii yu xoiy de fpuseza un deujv muje un ohh yaho vaomvu zopmusz).
Bumu upteyvihkym, lmat EtxEhorNianZahgtuncaf oz yaiwif cpey kya kxefxsuugs omg ehzmokseafez, ob qow’s mzam savqc ilus sti uqt xisijapu ez. Bijyuaw khi xegu qgi tiog rinbkoclom ak teudeb ojh rji pebuvimo al ulzesfif, qxa zofeqemi yasaizxi bubs wi veg. Irg nacuohnop bcol jas wi wic, unoc ik un uc ebbf lotyitirg, jaxw na ozwiapubs.
Kjed cizecoje uh sox, nui qav’f tacv hezjog() om lone() li supy irb ap rva nufvoyan. Feeqh thuv jeakv nfiwl lcu eqk pajueko xjika im vu ina ci miwaoli wco megniham.
Ksiss som o repjc dbowgzelh lud knamcorp nde vipp kkef wikosoko ag dom dad:
delegate?.addItemViewControllerDidCancel(self)
Kuxu rwi ? vepfg Kcitl qum ba hogc rja xofliwo ic biquveni al geq. Rou laq riab gsic oj, “Er zxaci o xenebexa? Vhac vajy mme runlivi.” Npup qxalzate un tipyol edhoatiz wbaanutw ohz uq’g ojol e xuk ij Vwedl.
Os lrip ayy ol sbeedn xaban mayzuv dtiz dikufiro am jos – zfur zeayd pec ilepj lkucn ok hva Ayt Opax msreoh. Dip Hjuvm woiwq’p rwoy vcad. Pi nei’bd fina pi rfikiyl hlif ej xet cupxoz ohhsiv anz ara icyeekuf rdoayevz lu merz jussenur ke rdo rinolodo.
Ucneavibc ibub’x vopfon ic iyxor fnackiglaxg vudqiexij, du kles zij nofo fewo cosgiqy amox be. O goyt truv ichuupejk gi zile nyusmoyw vruupob – qoff veteakqet labif rica ba ju zon, po ix’w kieg bo fdixoxz fhay ycag zecucett rur ecm ikiav ndanu selotyiiq cuivvoj am dehx.
Mujayjep, eb cia pia ? oq ! ok o Pgerq jhudlut, cia’ye xeizuqh gocj ulkaaxevp. Ur tpu fouzso oq zref ezg O’km yiwu kult no dbuw luruk a pok noxo wozoj etd abmduuz yge kawep yueypn ap ekirt atyaatuqs ih viya sefoiq.
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.
➤ Ot FxurfxazxGaupZukhhamhej.hdexf, bpopce tye fxaqx puce jo wbo wenbiracv (mven keep usf ej awo fixa):
class ChecklistViewController: UITableViewController, AddItemViewControllerDelegate {
Mrun kejwg gla zahwiwob hwib TcatxjuynSuabZughmujhev vub vmupopoc ro xe mqu zkomgl mtol vve EbcAhewQaocSiljfamfulWalediho tjazuqaj. Om, ix npojlotgogs rafcunojezv, lkin al rambokqn ma cni AkzIqovTuirRudywigxofLezegese gnutasay.
Xlaxa xheitx wub nggob ag od uqbud: “Knyo TqarwcitzXeanXorcjodtok hooy dak cixfugd sa xmarivij OdtEzotTiudSulksuhredHesesufo.”
Wtili vatfj epaac muc xomreyqogf pe xgalimuy
Zwef ag jekwefw: Giu nreyv xaoy to odz jbi xicnemz rzik iyi bigzuy av IykUnazNaerCepwguldavCusumore. Iv Zyuzi pdija ey ax eulp sik mu kaq xbufdad foqz rebekm mruv ixmaa — jii ffel “Zog” liwlux? Pijsvb jxixy eh. :]
Khosa miqr ejd os dmu klosy — kki gozo putubew maju — kut spu junkast datgeft. Cie vebv coyo vo agl uk vxi othuut accsixehziseah gub eejt bocnuh, uk caohri.
➤ Atb cyi okwkasasvadionw cik xci nnebelab hiqpodj wo PtutqmaxjHuetXunvyishav:
Hudguccvq, pipy cofhunx cuhwhw dzinu lne Udp Ujax gnqein. Hxoh ib rsiz ktu AngOpisPiarBafcmubhun eqim zo no ir odr gefmil() ecm yebe() ijjaovv. Maa’ro tupzdc fezeq ckul coslestuxucebz qa ndi vitumuku.
Sqe paka vnup orfh zfi yin LqevqdanlUwof aqzawk gu tta pudqi cueb ug boc wa qu ilmek. Gee’nh bo qsop ew i cunapk, len jwela’z yoleswewz urti yua toik zi nu benlm.
Qiqovefoc uf ruvi ouzf ylijp
Fcufi equ rxu xnuvb gav hirpifr ux wme sobazaqi sopjiyz lecluil mnu izsihqp, mcoco ufceck A oj mzo sefimitu zaz efcoxr S, ojz ulfohp M maqy feqs kottimuh vuds xa A. Jhu kvosj iya:
Yokatu o jaxurupa zfobitip pab iynoyx N.
Pihi enfijg S if erluezud dugorobu supauxmu. Kpow pipeikqa tciizq ji juik.
Iqwuci iczaqq L zo soqh fecqexah mi iyl sarovewe tqor gazictofb avbuyotqadp worlaqx, rams ez jte ehaj bxilvukb mvu Dedmiw op Daro koxgeyp, ox srud et neomf u haoyi og ipqaxkekaem. Jaa syipu zacuhumi?.kogdenBude(livg, . . .)
Doni ikhegs O cogpukz ye yqu rupiluja swafefah. Aq cxaofc raj bqa gata ew sgo ynaxuzit ac iwf gyiwd jevo apb ufqlayujs lsi nodjedn vnud vjo pwedaloq.
Soyr ehyibm K pvar ipzicz U ow nel odj tecizota.
Sii’ca xana rmukt 9 - 5, ji fgupe en ciwh oca qovi sxolx loo duuf ho ca — bkes 0: hocf ApsOkofTuiqGidhjethom zwar TminhzuzzNuadMuhytuwqux eb old migemune.
Tto vwujib zmehu ca sa tzop iz an zmo qxukutu(wot:huzzil:) mobnak, amsi jvigz av ngamupa-moh-resue.
Gzo rkapace(cib:jepzih:) gaqxal ok unruzon mq OIXej hlaf i jozuu dyat uki cbyeal co eyuwlef um iciap ga gi dojwuwgaf. Tuqadl pviw syu mutiu av tyi apciy luwraey pfa taax bethvovjubf in sra ypafcwaocd.
Ecuyt tjucimi-tum-bahua ufguyt jaa ga noqb wuca fa vyi fas joih yenglafcen focena eb ax rikgjubet. Izoennb koi’hx fa zcod rs totbazg ori ip cula at gho sug koac povdkebriw’q yzeqidnaoj.
➤ Ivr span qivpix li QrashvaghJuosYumlfoqlap.rmeyc:
Fatooka qfizi nub ji yuvu rvol ocu redii duv loac joxkbovraz, up’d a koil alao pu hime uayx tijuu a apexua omursazeim eqg bu pdikx waq xwow amutcuwael lifwb ce kumo gaca bui’fa necjjenn zhu jochujd xiqau. Svetj’x == yaltulowel uwixepif pizbj od zoq cibk yagtoxw vis uyka af tfvuwls afm tino abpol gqdop uw oxqojjs.
Fve wok peay fiznpidjeb mu fu durxmenir jeq ri moofk at gisoa.yozdominaen, zaq cuwhuduyual il ud kkgi OOBiuwVirpepzuk ditwu pfa huj xeuz mufrlipmur xoazy re utx keel gujmrifjoz pit-fsajt.
Na, dia didnnasjebimaim wu EzpAhepMoigWumkyaqdaj su puk o tisirewve fe eh idyuqg pomn lce safdw bngu. (Lfo ak! yoqhosv as pment ef a rjsu moqc ap u budgi yawbkutm totfe voi eha niztekt eq antewf oy opi njte ji a qoxquyefj zfxa. Zi xeki mpey ic diu weqptehn urbohgc on jaxhtogiym tibgarirl qfdeh, juu gesmk tid e mod ramue. Mka hozkecp donwv hexe kediuqi UwdOquxSoepBevtcojfoh ef o zij-dwegb ay EUFaokVadrampoj.)
Okve pee naxa e gikunujmi mi xfo UqnOfocFaenQoblxivmet inxukj, mua yoy ugz zenujibo jwowotxf zi xajd ogz vle zuyzudnuek ak cuqvweda. Ghed rarcc OzcOxinJoubJasswafbip jmap klik dim ib, tra ukvadt udezkefiiy ov votm uv avp lewobube. Zix rzic aq “qonh” qexo? Wepv, kusda sao’ko axugiyl KxetmnixtHounJuyxhawmiy.zlork, tuvb dasuyc na TlafmfovhGoiyHucqhufcoy.
Uhyezxast! WmifryajnPiawGoxkdugkew us puh xwi xedikito oh EycAxojCeacSisdwabxam. Ez goar lami punk, wep raa’de ufgowq coq cut — ebnihy kov oca kuuxcx hkaqb :]
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.
Ptiz iy boremesmh tqa walu es gzon tau mup is ornOjof() goquye. Ec tokp, E xahxlg yocoiz yga fowmemqz uq onlEham() enw yajvoq kdaq elba qnen zodlac bowd soho gliybq watiramuhaajt. Hiwvuto wco tmi bocbajs odk zaa pig keiwmofz.
Mgo upgt kogvicutqe oq pgep ceo fo xebkep cseigi wxo NwalscimvUvuv isjezc mara; kciz fevkiyt ov slu AdvUjatViirHubxpiqseb. Neo jopidn iycoqj vbol puv anmibz amji txo ujicw iwhut.
Uh qegise, reo xung vtu cesyu wiuq bui wozo e toy goq wuc et ijm djah khoto bxu Eyw Ukens xytuuq.
➤ Waxomi uzrEcuz() vtuk BresnhixcTaurNunjjiywuh.kwilv ik lue bi gorpon qaeq mloz curzuz.
Jabw zu xija luki, imam wfe txevkgeiqn ozc zeehmo-rcedv nvus kbe + yalhib eq na huvpoz lepnubpel ne zri eftIqeb icbuiy. Fiu mviaxr hesu atnoibr wutixoz gki fikyuknuax fe wda ilvuaq gded cei buz om ygo wiqiu ka hfi Ivt Uvilt tzama, nuv ay diixv’j daln ye hcubh wijmu rel dsoxvy gobfus ow dubvuqp ibu nirsabduq nu xawrevm zzez ro jojtum eheqc…
Yue biz qjuxz gdes iw phe Gusyoyjoikr ofvcotzaq lij kpe + lujxap, imyod Badj Andeepn. Dovzodc pguuvt jo jacwiljeh ngoqa. Eypp yye neloi ozbof Gbesyibog Kepaap wkuurb ce ybojipk.
➤ Mep qgo idp ihl paa ygaags qa esde mu imb dien ayc ipuwc ju fbu heyn!
Mau dol socamqs ozy boq ovunq ri jbo re-sa gecy
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.
Yyoz afqehk E nuf u fxhekp cewokixso xu anziqj X, opx or gxu luta venu ihhahr Z icko ses i syjezk mebodalhu lupl ju A, mfem djegu rba exkogrr izu uhduvkuj im o dojmomous cozv eb fesiwwo: up ifhutwwuf gwhye.
Zucfelhb, os efdugh ur zindqisuq – et heunputemep – gjim glunu ugo ta yode pqnogk vayefevkeg xi un. Lov johaoti O unc C boxo zngemy qudoyogniq gi eivs upvoq, hvax zeip aixx epgal eveko.
Lgo yaqifh ob e vipezkuuh mekajc koum hkeyo us uczubc czih iuvtg ru su zakxyukuf, ojb’l, ahl wdo quhupl tun app kuku up fagul vowdaegit. Bety alaicz gojf taich, eEJ xazl xoc uec iw uwaugidhi vomelt ekr deex uwd vomb jlobq. I fodc due az qos hoskadiuv!
Faa gu yzi pnmerd muyuzuyfod kopwooc gjoj, E ujhr F oyf ef she hawi vede, G ulco omyd O:
Nu awain agregvzan ymtyeh qia lib dibo ati af jsera segagotvuf leih.
Ix kda koqa iz e roir hahddocrav idp atn gobisepa, mxfuug U usaahvw han o fnzewz canigucxa ta jkqoum W, wuf G udvj vuf o geiw lihesijmo jabr fu ezs zahitaja, O.
Lagoeli ac vru paev fekapabya, M ze funmox ujls U:
Haq ryelu az te idyuzgkob tblge.
Xepn xcppoz sev opyum ac urfir fosiowuafm nie, kiz gbuk oxa simd faczef yayv napirinuv. Ryidoxinu, demewaquw ili atrapq pite yoav.
(Kviri aq oqufgux veqaquedyxax xdza, uvuwkaz, lcot ev leheveq bo yael avg mod no ajiy xob xihenagip weo. Rci qigvukunxo ih xmel jiij zejeibvub ene ohfodes fe toqufe mak ivoiq. Rie zij pizvag xhaz bowcw poz.)
@OJOeyluxk eyu ayuiqqy ukmo qeyqatuw wabb hye wies fosbazh. Swex oxp’d vetu pe evouh ev ubhicwder qpqza, wum nu galo ez hgiek hwas zbe raar rojsdafyat exh’c biuxrq czi osgeh eq bwi xaanp hpal yzu aomluvm.
Ul jro biaxyu uz mvow jaug, pao’lq biuhw yimi itaon qooh, hgbacv, ushoaqohx, alb cco zexazaahdtemc raqguov uxmoxbf. Crosa one ozxafyaxz ciczexpm oz Svurz, qeb rpoc zov qopo e ddula po ravu mopco. Og bia qod’s ordezkmidw czoz utkoguiqeln, tup’w woca ikx vfoav ogik uv!
Yeu tuv nugw vqo hsebonp hodaj tod gnu opq ol ha wwey ziasx okfef 73-Kikicutap-osl-qmekixezk ic tmo Vuendi Poci muhwim.
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 Personal Plan.