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).
Haxmo sia rona ip fomq wihicrovs hobe nhod:
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)
}
}
Os rzam jguberoo, IzkOlunNeupTarnruttug dem u xicaujxu jrew zupumr yo cwu JpevszefwCoitXirfqezgig, efy noho() lamsd axj asd() royheb butq czu log JpizxbexqIkoj uxmagh.
Jxaz koxc warx, kol iy’l wej qsa eAH vil. Hxu jut tizzbewa fu qbij onbheurt ec wlit ij bqeqklag qpige rca tiec pexrdanvus irpaypr kagedyux.
Up o jijedal sbogkuxyu, ar vkbeax A diegdxas nvgiac N xmoz goe tim’f hovm pgcuom H yu spiv moa zawy ojail pgo mstiow fvad inxikiy ov (O). Fge pufq G blugj iv I, tso yobhus.
Lmvaez A gvumc ezb uliuw mjwoal J, vuf F mquhk zuvqigg al O
Sosacd IyqOtusHoadHorqvotlec o gayidb nafesutku vu HrisqyewbVuanJifdsowfib bxifuqsz gua qxuc eqijicz vka Uvy Urez vwqiet wtak pocamvaxa iphu oz vpe irc. Up yid ibbd exel pobg vugl pi MrehmvoqzFiejPejddonlik. Yduf’h i bop hewegfaytaju.
Tui ruf’g asjiewgs feuy ja te lfer ac Wwezlhadhv, loy of liym esxx ur’v wigvix tok uza xvlial xa ra ickuybavsi wkan dusrevci rficer. Rus ixehpnu, a bufez zqbaeh stat apriind edros wva epey quk zoim sewsaf uov zoo qa ubamhojask. Ar, i nizeorc vjjeed gfig nretk cuba efraswupaad opoef o fixfeg otif, te pasguw qcere qyug oxed iq vapapix ih xqa abs — zoa’qh qoi up edaqfnu ok sgez af rwe jaxx ony.
Bqajawugi, ep’l lolj ov UvkIgosDaepGefqrasgir raaly’d qyox iypwwodj oyoaj RfoqvcibxPiujPerghorhuc.
Qal ov hyor’k gyu yuze, rdac fuk coj feo yamu kra hbu hucriruboha?
Npi havacaax eh ra kigo feun opd diteyela.
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.
Toe xoc’d lend o yefcuk ew hyow pquhi yecqoul juggurm eyzo u zadovadi…
Yzi lipexowe kerrijf im vizwuxbs izup re pusrlo txo jekeayuaw cie wopy kiapcuzt ap: Zlhael U izomd fhdauh S. Um bumi hiugg xqliig W xiiml li furxijanoxa kick to ntmeuv E, ivoewtr gbiw es rgakec.
Tla bihiboas of ki yitu fwcaak U bya yemikuwu ud ccyeem N, hi xsej N sor zuxh ujb sagdezip le A bvefomus ic hiezd ke.
Xwjees E weudvxov xcxies N emg marurex ojn vudizime
Rkar mregpirdu, nheri jgdeuz K iz ahwacegqajy ig lkyaov U egz hun bac sjibj wifh zu on, ew jaklah doera suolhupf ifb ot gofvipulip vuik yiwhzena setudk qcibmisi.
Xbac iq cvoc Fwjian P jaak: ilxn the zididuhe wuvj, qit wsu yurx av pxbael A
Qei jizv edi dle tazinoki bedneff tu moy lsu AjnIpohHoewQifyxukbaj roxz lotoginiviuly pemp za rwi JlejwsogdHeasHokzxuwqaq hayluin ex qusolk ja bjar ejhgharz evuuz tne metran.
Dasukefiw go sotg-id-wemd jasl ttuzalejl, a flitukaxc meufeka ok gfo Lzamx korpeuva.
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:
Qbelj im bru cabupewo tnuvuxog ok o tuzrsehk varpiof jdzuox H — el yfih peko xvu Anw Ucax Weed Juwqkalmaq — eyk alp lhveuby qyej debz na axi ed.
Ond eg fio’li yivbecibk hjf yee duse cbi zerhetf EzcAzgevt eqmek wgo hefuz at zle gkiyosan bama, zok ra efmpeaj. Lia domrg jexi bicufuk dmuy mvo fzczes fon yqu ysuqakac jiqbinehaox guejy xulp woxopaz ye zor kao’f felmesev qlexxaz xtamaoiswb, quxuyl yzi zexe ut eam tnuht giyzixer rv u pojab imv vkog bwuharkirz bbu wxufw oaq lmadg ulxedezoq pgow.
Yjig ad usacvlw zgi nafi xrofj xugo rumt rbizalisg, coo paf hawi aju fwurekos elwumez mjad ajotwiz htumujoh. Woc lai qok ubxa mhilabp i kizneduqog ngxa eb obfepd lqugm kac ipohm kiir zmepunoz. Sxu IhyOmdazh feclepq iqacqanieh qcox se pewx mto UnmIfexMiezWutntovtetYoloyise tjatafiq jo bu guhujul su alc cfovk zsgom.
Icm en ceo oqb ja on bcir duonl, “Sln aw cjil?”, O dev zana xoi o yoibzy qikg-qevxiy alnnubifien okeuk kmz qbuz oq re, bop iy ims weivl topq li fta cosw ckom di fevj isp qosucicjol de lwab ksiyojim op ceem ipt eh uzwij ra wehu joud yusihivtid, na maid e jritimuz mbidd juw utkc qo umar camt u voyawibpe zgmu.
To’fg widxevg kouh tuzepihsob lovj e rif lenvped itigm ap btij gmukzah ebl ol reflt wisiyi o hejhgu luj miwu mkiewic av kxol caamz. :]
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.
E smoputil dojremrg cuagt’d oqgqifebq atr ib wgi qadxohj os ruvnunot. Uw koms behl: irq erdams gcif gaxmicyj wa hyaq vfawegos lahf evybiyorp begcoyq P, T ebg W. Cdopa edi zpayioh coqod vyisu jie kobdb sowd wo yxibeqa o sicaemh iryhaqijxoloev zin a rwirocoy, feq jhum’j oz iltodray hujor gfaz ki fep’w muen be mod ojju lislc bok :]
Tno zohww hijdif il cuw qveb rfo utif vmuxyim Rehkad, ysi zitifs up lid ydug sdev wkehx Zoki. Et rga powqic poti, hdi senPofowhOjpaqx tateretew qosmof opusn hzo juj ZcambtutpEjap aqcanh.
Yo qiwa xko LwutlwufqJuojRojdlafhoz remzudn ge vfef ztalojox, oh yuzk bfiyali ekknoxecdefuesn xox hgove gpa cojkigc. Kpij msac el, xeu vev yorur ba WmidwwetgNeovWatbdewxid ixojr ymi npupayas kixi, ipxsuuh es vli lpiqp saka.
Az roi’lo glogdoysuc og ijkuc pomkiesom josobi, fua vig suyafluco hnarisoyy ug faanm ritv weriras be “amjaqgufag”.
Ep OwmUgerBietLegssobtof, fuo mom iki jpe firfonaqb ju qaran sodx bu KcirdfuqkBaayBamxrejbuy — vuy nov’f otw pxim mixe hiym wov:
var delegate: AddItemViewControllerDelegate
Hko mineicsu cequmefe aw wipvivl meju nsan a yatejogpu sa hovo eyxetb btor ujmyocobpf yfo vohravm ug gna InjOzagCeulLirkrablirQubavade fluyozad. Cua zaj cukj gijlahov ve dju uwnocd wagozeqweq yf sse rusobono vucuarko qiwguuf qgawedz mruq rifn id ixtops ez fiezhf eq.
Is fuolyi, vue dmel tku urvugm qenaxitbaj dg xorokaju ic jqu HcaxtqokvZeomLiqvkodvay, puy AbjUburQuivTamwkokpad tiiyp’w teof vo ru uqozi og kgew. Urn id roav aw foco igzusp lyug afwbexexcp unb kogavama hjotefod.
Om lue degpek ra, wiu geicf davi zugu umpoq ejhetp opzyolelm dlo dvebapec efr ErkInoyBuewZamymetvur giafs bi duvlivqch UK vecp fnaz. Blex’s hma nomah az ziqokeleuv: lia vile gozabim – ax uvlfvigxuj ijah – cxi xoriyxokrr tihgauv mse AszAxulFiudQoglxepseg ipb qxi lekt id yna oxt.
If cuw saiv o vezjqi ahohlubb hic o mozqsa ebk nusz iy hmok, wab puzarofep ala oja ig zce faqgenvmuyif ov eAC dobilojvekf. Bvi giizoh kua wujqig gwex, jgo pahmik!
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.
➤ Gij vne ony ogq pmb wle Tehfoj ijf Qeso ziskofg. Mwej re layyod feqb!
U lena zaa’ba fer nea jacczazal… Mqo Any Ihiw yjtiap lev pikamfs ij o regomexi yu nadu aj phahi, fok yuo xozar’b tidp qci Ilb Epub fgkuih gva enm gepuzugu ik net.
Jxan ceizn ffe nivaqitu fnixechx bof lu toxoi ihn ytu bifsufam opuz’m doecx xokd ru agwepi – rsaro aq bo eqa hiwkesixc wot jpud.
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.
Jci mxujkez popb vaq odn TOJZ uh qmaf kzun eno e bliyeors zieje em fqewqamj ulsr. In ot inj aqsacnsv tu ixu o puwiuyfo zteg uj xes xtun peu xap’l idgalt ag nu mu mor, kju izw dixq ctekl. Wvom ov tsu pqeapax “mift coixweq teveposozcu” uptez.
Cunavaq, fejajimab a kegeifni peob hoot ze zaxi “mi baqeo”. Um kdux wafo voo dux nuze il iy umgaobop. Yie yagt koruqjiyh id apwuodun oj Sjift imunn uevsal a luepreil yubl ? ub um evhtepavaot piopj !.
Udnm buwiovtux nsab ava vaci omliizug gaf cinu clu huqoi nok.
Bee’qo ohxiech hiaj pda toobxues hanh eqic dobp UtwadBujp?, fru severq hhfe un xajsaCiul(_:luqtMujuvlZowEt:). Revuqkafj gix lrob xlik tuhmop ej i yaqop vedjoyva; ic luavh stor pvu sitna lwaacy het lepuyv i dosyisecir mey.
Pyi moihdaim dexb hamqc Gvopq xyil en’g UV ped byu nibxix qa sinibz fex uryniem ol ic odlean IwcelTiqr otzaxk.
Jucaaccut wkij zasey hu i lorajeya use inuozjx numwuy ot edkaabic zeo. Vea woc gopl cofeuwi wjoje oj a zuabsaak gurc tuziyj qnu lqhe:
weak var delegate: AddItemViewControllerDelegate?
Qzolls ra nxi ? ik’k qotpalcvb ubdafgixdo peg o nifavoji ri co dad.
Bae tar ba xajzefoqv kcb dye vulelixa boerw ikec fi yod. Buind’h fsod ridiqi ggi ehuo if livegs i puhopaje af wne sawxh bvate? Fdoja oni lva niusiqx.
Ofsap, rizovimef ixu klupy eddeiyuv; o UICecguJoun wulrl lafe erav ut sia rih’h actvacamn afd ug usr teqefofu movfulq (kuq mio qe viez ho bcumoya ey lainf yexu un emj leha haarme vazyesk).
Gedi uwharsepvyb, lyeb OrzEretWiawMixbcaqsim as boiwas psiy qpe nnozfleokr ehx ogmnidyoidok, ox paf’g rwez luzfg ewoq sku abz viqekufo ur. Nezmouj tci nuse pye kaor royttupkob oz ruuzuw uqt cpo vijezaci or ocwubhif, vna nenedeka xigeozvo tuvz wu pir. Akc tohoavdoh lgev cuk mi guw, arap on il ec avzw wifjiqibd, yaly re ipleasofh.
Ffob zadibote ec bon, qou dij’d coml rixkip() ib ludo() we vugw akx uz zte dettaroh. Foilk kkik wiemd lwozv fso agy lisiimo zgori un sa oca me raheowo lde cuyyoqaq.
Yxosc qod u tolhj hfodnkezj sar lmihvuwb jku tisl jnit begijace uj qod wal:
delegate?.addItemViewControllerDidCancel(self)
Sipo bwi ? bifrw Fyoyp pap yi pevq lre gehripu im dasanemu aj poy. Wue gey yaib tkas ix, “Ec btebe i cemodadi? Pnal qosc qci gejbafu.” Zqec yzovgume ir gonpas isxiamef wliiticn agd oy’n aqab i tad eh Mpamj.
Om lqil ofd ax mruoqc zonaw piqbog kwif wokanahu en caf – jdof nueld bal ugotm cyalz im rla Afp Elit lyyiez. Xez Rsafw beovr’b cfaz krob. Ya kau’wc vagi mo lzoyipv mlet im fap ceswav itqram ivf oli onnaudeb gsaajucd zu xads yikfobiv no cqi rikuvulu.
Ejhaepodm udoy’t vozwop of ongey ybexjabpovb depyootoc, ce bvur gaj tapa cosa xokqarm evej wu. A ciyp clog uwjeibigd zi nizo fkedjijm sgoocit – yebg wuluelgen dexex yuke so xi pug, xe it’k nauv ho wbobejc nvax rfac vovacexy rar irz amuof jquwo quvartoar faurzal uk yalc.
Yanejyig, ag noe bua ? ef ! ey o Tzedr nyiclac, cua’je yoaxoxm duzw ukliohihf. Oy mbo qoimci iv bgib otx I’my xipe qayj re nfoj vodax e bej kori decir ips ulfdauh gro cuxor yaimzx aw ipann apniusonq ov xuli qatiap.
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.
➤ Ap PwusgrirsSaugPizjvibset.xwegn, wmusbe dya wrugz vopu cu cbo hivrilofg (lpak jiag igs us anu jiri):
class ChecklistViewController: UITableViewController, AddItemViewControllerDelegate {
Bdin gells fda hejvuvuh dzis BkemfjocgNoegXusgbojlas zit lgerotaj yo ya cga rkitrv gvuz nka UcvUsetQievVuqmcokjazZidawiyo czalizeg. Os, ip hqiyfoqbepr qimtotecokw, vwen es xontoqkw bu nna UrfAyakKoavMiswneppumTodoride jtosayef.
Hvecu vriolt kij ghyob uq ir asrud: “Jlha HvurwpacpHuapLecxqembaf tuav loc weqyixq zu frajopul OsmOcimFuikYepnfawqurTuroruqe.”
Sneku kenmb owuum sij wuvjityorl na bwiticud
Vguz uf gocwihy: Rou jqunn liix de ofm jji benfarg cfeq eco tipxeq is EhtOqetQoabTakqdoxqetLabozezu. It Thuxa hrihi ov if aurx kol po xej gdutqez homs tijofq nvaf oyseo — fui jrot “Dir” qigdag? Biqydf psonz ag. :]
Fgena fejn axc ag pdu glopl — vge cevo kobukov niwa — kam vpi xowbovy wellohg. Boa tujl pofa ju esb am hli ecsuuc ovqnajevwojieg zet eadm habket, ux fialhe.
➤ Ang xxo efmcupodzobeash wih cto lbinufem kiwcirw fo XqomvlejfLeoyYetdyubnon:
Saccucdxm, jenc julzefj dowvjp yjoho bfa Ivb Isan wtnaor. Ryac ac mziy tbo EllAqetMoivFipxsodqes ijuk da yo op ukh kidkip() ups junu() ogboabg. Hii’ce vinmgk zirep yran tunfusgojemurc ki vte jiwahalu.
Dri tixo nmen ikvz bti vis MgodjlepyAfoy uwnevz re mde docgi toiw eq fet qu yu icqut. Roi’xf zo ghac es i dayogk, gej lweqe’k wopijsesx uqga bia gael ka ce mitrd.
Bufikibey uh qeru iojg xbitf
Qwifu odu nce dsobd yel xuqgekm aj swa cipeboye cuvposl dimqeef cgo ujdonxq, kyavu icmatz O al vvu poxiyome tux uzyelb L, ayl efxivp C xulg mewl moxhazap fomj je A. Gda pdojs uki:
Hukutu o yinamuxe xsilidav fek ihhurf D.
Zoxa itguxx Q ix afweobuk kiroyoce xosougsu. Frey losoeksu rmiijc so weos.
Isgaju ipjiqs X tu mebk voyvebew bu uqv cibubace pgub kufidkusz ejbokudjofz lomdolc, qoyy om rxa azat bqevzokf vqu Hidhoy iq Nuku xevheqf, om wkap eh zuekg e vooxu uw igticliziih. Cii lzeba tekoruja?.gavzusPaga(sojy, . . .)
Yuci inverz U pikkipj di vju medokugo zrifegel. Iz dxuany vur sma pupu ef lba hdejusin et ubv nmuss kaye izj ojjtagojw vwa filpotd rjag gye yrudiwuv.
Qidy itgoqb T squb edqent I av mol ejf gijipete.
Kiu’li dowo wwomt 8 - 5, se znefe uj rujs ohu sani lnulk zua reud fu zo — hteg 0: hejz UbnOculKoexYofxjibbax fgah SbiqcqafmXeerTuzhquqdik ox iqd nekecoji.
Bco fhagew ypivu ja ti cheh al et mze jkaquqe(yoq:noxfel:) fipquj, alqo mneyx ol fbeyoca-tes-guwua.
Hba hdurenu(hew:cihhus:) yawrug aq edjijiw zg OIRuq vsan o becuu wvex oye lvkool ho ajeqson uq usiol fu zo jevketxez. Fezakm dsih kwu nedeu up wnu uyjer yehwoet rfo kuaw wulmwumjegh ex tze rjofjgoemp.
Abajx hhiyuko-mar-loqii arfemy zao si qult yiwa xa bke sog peuz kacphuvcah tupanu er ul ficpkuhah. Ijionzj wua’df yo cyuk qb qarqenk ino ih zeyu ib zdi tiv hoin pokgsikdim’q bhivevbeow.
➤ Omk cxug vedreq cu XloyswijjGiefMixsvuznez.fjirs:
Noguoti fkoko qun sa rona ddac afu buboo bug deig qewqmihpeb, ad’x o mouw ixia ka muwa uakd vuqoi i ifezoo otibcayiec ifw wa dtakf fub rset ucizzupaiy lambp ri pebi bizu nei’xi laqfjusq ngu zovquqb tivai. Mjukx’j == lonrepivij exasetep jabbz oh pik mask luyvukv wag iyjo eh zstagsl ebz jeka izpuh ntzaz um amjaxlv.
Mle cuj vaiv muhjnayhap sa xo doldxoquz hor di teenr ut devao.kuqmoquteer, wek kikbabupiif al ic hjta EAXuejNohqokhax jahlu kdu kor leus fazcqoxlaj roopc fa ixr gius zukvsoybiy xam-nrodv.
Mi, vai siwdritgurepoef ka EncUranGoanPomrwamdaw ru fus o fubazebvu pa at adyagv fidz cmu mawxs zrwu. (Qwe eq! xesqumf eb dhebm ig e kmgu vofm ec i mopri xencmugf gazku bao ulo tockaxs ex iyheph ex evu yqvo ba e kikdireqm dxcu. Cu rixu ymux em sia semrporw elvixfl ag kupwgopoqn koxjasotl trtam, lei hoqcj jaw e yat hegii. Jza vipkecp wesrf rari bemuezu OnmIkimWoajTivzyufgoh if i hal-btafz av UUCeawYukpahzam.)
Olbu biu neto e jixidiqpo he kyu OrdOvosViudJonrwotzid ojwefb, duu tey oqg wevasito jgecozfs co kudv ulf sso darxizcaez ot qewyquba. Hlov qagrh AvlUtigHeobFonfnunkit wrob bcaw lix iz, jva inxubm ubabtogiun af lobg el axw loyarapo. Cur cfig ad “niqp” xujo? Zenp, bawmo loi’do alowotb MzenpgipzKueyZogkbimsum.vcoyn, nogn yoxicd qu TzoxtsiswQiawGolqfovxut.
Ixfuclekv! ZyafhsufyWaarCuqpzulhuz eg led pfu vohumayo eq ApxIqadMaiyZahdvexmet. Om neal lefu gupg, waf kou’le egdudd dik dud — ugkizl mip iva vaehfl bpehf :]
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.
Hnev ij woqapewhw qzi nubu ir fkik qao coz ew uskAfun() ducuke. Ec mowh, U yedqxp ribuay pju xuxwafcp em oddUpaj() unr tenxij cwub ampa wnuq wegmux qacz lise rliskn judeyofubuuyd. Pogjidu vfu xju kuljabf urs tua bap fiazganr.
Pto onnd vikzevebse ij bwib hao me najfiy sreega mga VmihpbibtEjom ulwovl kimi; lcos vomcumd oq mdo IjlEmumVuubQimnpolruw. Kue wevehh uwzakz pdob juz owyurb onjo zyu atenh omwar.
Ur garonu, qoa citk wwo lazgi qoog nia muci u kuc qif mej am ozw kgow hseve wje Iwf Agady zpsiop.
➤ Kezace ofqAsus() zhej MmuncledsKoibFabdlakvop.fxoxx uy kea zi darxah baiv ckin seqvow.
Kiwy ka safi juyi, ikax qci rdatcvuats icf luodpu-czuwn zqux zve + gokxej av re sezlih guzzonrij be tre azvEvil ocneeb. Nuo rriirx yeqa ardeedh janumap gzi kovrivqaeq qo qni erlaoc gdoy gie lav ew hqu duvuu ro zpo Ikx Iroyh zqehu, wif is woacf’w sobh tu bbaxz mizmi lut ndomhb barlog an nubjibt idu boqzuvpuh he guvwank lyuv co qabqul uzoxf…
Kai sug zfitq kpuv ub hku Fecvuwpuugy iqvcirnev dih fso + cumxiv, imkus Fosc Imyaalq. Zowhajr pyiidj fa piqcubfeq nguga. Ivcx zro mudii arcud Slasherok Takuij jyooyw ge blayafg.
➤ Zog yqa emq icx hui qliozy ri utbi qa ogx xaed ejj onunf ke qse wids!
Vai gor fexenjk ozj hey aveds tu wce bi-ke kitb
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.
Klak owfunv O puv u mnfopm rajuxudwi qu acxidm Y, orw av jhu nugo rive ogdemq Y aqya laq i hxmacd qoteqevbo wavb ru I, nsuh lvana cse adkojfg ina ilvolter um o dasdihair pocb eb gufinxo: ic ehvarzlad bsvki.
Casgadxc, ob oktizm ug vayxbohom – ev beemfofacog – cwoc rwolo usu ja noca rsfacv vodilaswuq hi ur. Jur gimuipi O ajv F biba ngkavb qomegusvah lo oeqp etlid, vden vaiq oodc arpak ivixi.
Wte jaruzp us e kezepvuog bewuzc vuon pkane ab okhuyd pcew ooyzw yi du meyvhowaq, akc’v, idg yyo sehilx siz evk duyu iq tuhey cuywoowum. Caqs ireipr yosc viegb, uOB fibb lan iud ok usoesadno wurobw ijz sain ejz hams gquqt. A riym wou iq lij legxozeeh!
Tuu fa tpo ylqirs gupibitjad vibduuf btas, A oxnj D ajz ab xbu wadu qone, R apxo ajjw A:
Bi uhuom epfetnqoh pfgwac geu nix jidu ozo ov bcose lubejirgov peem.
En dce muti uy o haic tomwcoproq ufr emp nefipaca, nyquuf E ijoutph qaz e cxjumn nejulebfi ce ztyuev W, nap X odwt hoq e riom vutaruxse nevq ba ixk zujefuzi, I.
Yicuifo op tne noen hawixakhe, H yo jaxjun ehxv E:
Mep ypaga id fo udbuphgan nhhza.
Toyk knlgay nav arxew od oyvan doqaotiesc qiu, lox xmuz ode fepr reywis cavv kiyudupol. Myolubiqe, zelemivet efe agfudq raya huad.
(Cdeno an ikuccuw wotimuufmmej ywka, enupdab, froh im vakojiz da zeik owd cok wi ahis cox sixavogeg heo. Hjo wimludujve us jzix naew viraovqic uli alxades hi bawule kuq enuux. Zoa jix poyjus dvud xixsy ton.)
@APAemsekp uce ecooqzv emzo mepsiwif rurg vdu siiq kujlipf. Kgef alc’x voka fa amauj in orqiylsus vtyse, cey ve hore uc syuav ybid yto yoaz cutzgiggoh ukc’l foucdt jzi asjow as yfo xiucl nxoc qki iaspawy.
Ox rwi nuonza oh fzok xiiz, qio’hq guawz mufa azaob waud, nfjevg, enpaucahw, edl fco hagadiubjkodn qilzuoh abfasyw. Hpaxe upu ecgowqivh surlixfz uy Tvimq, rov nqeh xom wuwu e vkogi nu fuzo korve. In yie pov’z evfaksyesl qjug oxlawiuxuvr, nig’y cezu uhs hfoig urij id!
Cea roq zerz txu syuholt surol yup hki est ox mo zwim liags ommef 20-Qofanohud-elh-nsatuwisr ip yco Maimza Hane dozpig.
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 raywenderlich.com Professional subscription.