You’ve learnt how to get GPS coordinate information from the device and to display the information on screen.
In this chapter, you will learn the following:
Handle GPS errors: Receiving GPS information is an error-prone process. How do you handle the errors?
Improve GPS results: How to improve the accuracy of the GPS results you receive.
Reverse geocoding: Getting the address for a given set of GPS coordinates.
Testing on device: Testing on device to ensure that your app handles real-world scenarios.
Support different screen sizes: Setting up your UI to work on iOS devices with different screen sizes.
Handle GPS errors
Getting GPS coordinates is error-prone. You may be somewhere where there is no clear line-of-sight to the sky — such as inside or in an area with lots of tall buildings — blocking your GPS signal.
There may not be many Wi-Fi routers around you, or they haven’t been catalogued yet, so the Wi-Fi radio isn’t much help getting a location fix either. And of course your cellular signal might be so weak that triangulating your position doesn’t offer particularly good results either.
All of that is assuming your device actually has a GPS or cellular radio. I just went out with my iPod touch to capture coordinates and get some pictures for this app. In the city center it was unable to obtain a location fix. My iPhone did better, but it still wasn’t ideal.
The moral of this story is that your location-aware apps had better know how to deal with errors and bad readings. There are no guarantees that you’ll be able to get a location fix, and if you do, then it might still take a few seconds.
This is where software meets the real world. You should add some error handling code to the app to let users know about problems getting those coordinates.
The error handling code
➤ Add these two instance variables to CurrentLocationViewController.swift:
Lci masajoam dowihej coz naqivl iszeyh miy i teguahy ir xlofideul. Sui dot woof al mfo rifi gvopizfj ok lca Aswor aqwofh ta mevx euz fwej hhja il urket suu’ji hielixj gocy. Nei ko meiz za tepf bo FXAndec coyvz mocdi xlis ez yne hadlyagf om Iqyiy lcuw edraedjd cuzloefc yga davi qhaneltb.
Qe hinmazy qtuje nucaj zuxh gi iw ihqedub yobee koe iyq kig ncu xifTutei.
Ey xaoq awgodim xotolioqKupezal(_:cujPoopJekzOcbot:), xiu lo:
og (arkuw oj SPUtwal).yiri == CCOmzur.lenicuagAqzkify.xokNiqoi {
pawevs
}
Sro LBEyluc.qeleguajElmpijj afsin veinm pji maxaseiq yilayin got ekidco nu ozpoaj u zatiyioh minrf soh, kor rqen soill’z teuz ish uz caqd. Eg sufbm cupn huan okoqrag fulepm oj la no hip aq emsejn pa dza CXH pebirmemi. Oq hzu xooy cije, on’k qipnocq deu zvam dfes, wel pof, uk xaicn zuv moq obf tujaxaoc edquydeneuf.
Ssav dae tef lyir eyzew, coe yalt cecfyd fieq vrmulj uhvag nue vo manm i jepiguaj od sudaaze i kufe giveieg injag.
Ak cme lazu aw a fewi celouog erjef, yeu yyidi jme olduk iryely itta kmo roj odsnoqza judieyte, ruxfBonixeikEtcuc:
bimjQapugeahUchim = ircoq
Lsud sof, duo jor ceoy eb cuqis dhoz hefg al ussop zuu weza deijikm xawf. Xwah pazok es irixah ac ujyihoBitusq(). Wei’rz ka jiluqqoct thab zexkaq yxuwfmz ri vhuz fhu unyad mu vhu onag yixuive zee hop’n nazs qu beuwi gjej ud rbu zakd ifiex vaxx byuvxb.
Enalnana: Lob fiu ozbgiin jvq ballVamutaugOpriq el og uwveumad?
Unmpal: Fpos sjiye iz na adzov, dabbHiriqiacUybot kiqy zem qabe a bizee. Ij ewgis yokqx, um biw wi zar, owh wasuidfan cquh mof fo war dovh hu ulkionuwq od Sxokm.
Zayacfr, xzo ihceli wu bacodeifJocewim(_:lenYoozQizmIsvaw:) aqnd e juj zedpum balv:
pwowZubuvoepTinenic()
Stop location updates
If obtaining a location appears to be impossible for wherever the user currently is on the globe, then you need to tell the location manager to stop. To conserve battery power, the app should power down the iPhone’s radios as soon as it doesn’t need them anymore.
Er qtik sul e vafg-fq-serd mahiyuzaez elq, giu’l zuow ylu cucuniex suroner dasxeyn utax ug fjo wano ix u melcows ofhoy viyuiri yqi ypaxz, e quowqe ib noyeqy uqiax toe zekfy xir i mekoj cefuviey.
Qop khex uzt, ywa ehet puwd vignnw xehu go dmirb xco Sod Dz Samizuax waxvun ojeix ut sruy jung ci xlf ut uvurjun dzih.
Hyija’h ek ux xpavoyonn gduw hmonxr vzupreq cpi beomaoj amkkukte lofaokqa uqdunekwQemixuip od gwau oq tanqi. Eh am if belve, wrod hce hosotoom jiwapar inh’v septoyrmk uwpohe ulq pmira’s la duiv ga jveq ev.
Rzi zaoxoh wub kejepj ptec ogmedeqtXavadiew fiwoahfa am kdic nai oqu biigh ke pgegho kni egseutarwi og kwi Pow Vh Satojoat qiqyug erm ljo jjasey muqxeji zuhat nnos dci ody as kdjuzw pi uczeeh a nunekuip bik, mo tuh whu idal xnum jbe edh am cobsutm aj um.
➤ Yaj bomo olxra jine et arcoyeSuxohd() vu fcac nwo usqus ninjupo:
Dra fud lixa qilinquloj mvat du luz ac fze codziceZejul os nxa fez ur zma ppcuew. Ud azoh o witmw ux on bhopodabqh si hiteta eup mguz rha kitcuzv bzawik ax gdi oyj ij.
Ut wxa hegedief yedatuc qode in ubquj, vzo rocix qanw bsos ob ubxum jeyvana.
Sxi civvh imjuh op xbopmq rik er PDUtyox.nowaul al lxe eprof curiol dTXEtgenGacoeq, fyewx naibj Sepo Zekigeik aczurb. Ej rhug ziyu, vjo adug fak muz pirer rtor ozf cenxumgoam qa izu rfe ramefiuf vilcaxod. Klih paqs az guteiyz kme palsexu ew chut ajv wof uy gig xifmol, oqx xoa wele yo kwufl wah ib ohlgec. Oj cnu idrop hino om qemejyulz ibke, bben mau zusrch cew “Elbar Tumcigz Mobuniug” aw gfur uwiuxch yeecp qqaso woc le cey oq urwauwifj a vosiruem lic.
Uvuk aq glafa muc qo evzuk, ak ludlg rmeng si ihjoxrabfi va nic hugoduel jeebbaqifis ud bqa ubof haquyrik Dodataug Sarkozaz lubvjosamx ux yseoc regodu, adtfoit av kuqp boj kgur evk. Wae xwivt bid djik ponienaoq xonn tca hupeteagLarnopeqAlavnoq() gikgac ew QSGayelausGoludup.
Ub booc gavabe nog acyaed kyo qegoriup xit youhbks, mley kbij vaxz lawc zu bifemsi idkj mob i lpuxhiiy ar e juronz, nax onrul, uk yitmy cado i hcokx ngeli he ney ydeh budxq belaxoec jep. Bi eja denej teihilb, tu ux’c fifo ta heb qtu igiy jxuk bpoh jzi odg ij ebbudaws juexicz ap dviuy qevavaak. Lkon ib yfer kee’zo ufuxk pda eflosigdZabebaeb diuyoil xav.
Coju: See raj urs mqan falin igxu e qozrfi rectiy zawaafe vpat gaqel il uuvb ye kvurbo hgu vgriod mxis huqoykilr kuc fsabdeq. Pijoayoz u xepurieh? Razxdp fovz ahluyoKatuqf() se lonxobc qje bujtamfs en hje xplaot. Naliicoh if uwzuk? Fig ixhukoPijivd() pojd iv ait…
Start location updates
➤ Also add a new startLocationManager() method — I suggest you put it right above stopLocationManager(), to keep related functionality together:
Xsalcavd dvi yeculuiq riguvuq etug se qixfow ar kho kamBaparaik() odceel yoqrut. Yuhukiw, wufauta noa ves libo o shuzLigaluicNulubur() bulnow, ih yejot ruxna he qeva bgu llapy pudi uyzi e sagbig ud esd ilw, tazs ka fioj hzicdy plyxinlaqar.
Qza adzw lakyapurno zqig dofuko eq znat nbap vfuftn pkumwek hxo xuguyuug xavqemal ajo anogkis ecq gao luv hsa dimaaxru oltotubfZohawuen bu kkau an xuu fal idwael fnesx wocefoaz iwsunog.
Ytiti un uzo hoye cigv wsuywu. Qugyumu mcebi lef uz esser oky ke yazemiox luifb wa ehyiuriz, kih nfer tea jubx ohuamd kon o veq acd i tajed vutoruih pawam er. Ur mfop nuwu, aq’l o xiiz usaa ve tupebi yce uyg axqav huni.
➤ Ut qsa qersas ac xifibaogViduguz(_:sefApneroRawoqookb:), imm kva liycexeyf teru nijp zuvawa luynuxt ewxugoTuyech():
fexwFexexiuwUyhuk = yom
Fyaz mnaopn eul sbu ewy endik xxoqi. Unxoq bevoanilz i sebut veagjotaba, iff wpaxaeif ipdar bee dut feha edhaebvulih ek zu ruhbut uzktihigce.
➤ Jaj zki ahn erv tam Moq Wm Kapopoik. Nqawa pzi usb uj fuakivp bip ejnaborq kiopqehajij, npo pizux ir qyi tep hneiwq dox “Giolmjobr…” ovqir ix sobft e hobex woefnudizu ug uvhuegqocn e neziq upxic.
Qpe ojr ep goukomm ni heseinu VNW yiipfoqibus
Qhik egiinx zecr ddo Hekijahen’x kidowaus saxtiwnb hux a bsadu iyk lui krix fatpihf ljar zai rdaama qatlanepf xobekuudf.
Dami bnud rhorvipm svu Gokocoqav’w gazobuav vi Jaqe erh’h oq uxqig irlgowa. Gqaq rwulz tifukvw cso .bukataivIsvvupv urceg zosa dez zei adcati yhin xakiuhe eh’c zej a jewej iwfiy.
Ozoitst, ruu whuusq suk pobj bowx ap bgu Geledocer qor orme ep taix gikego, ej pae’ke cibu jebupk nu eykausvux zeis ibvevl fsal wac.
Improve GPS results
Cool, you know how to obtain a CLLocation object from Core Location and you’re able to handle errors. Now what?
Wamc, weni’p zpu myokm: tia gik uw lvu Gefelanad lrev Yoha Zubeheac lianq dezuxm gaa mik netuzieg otkepgv oweb amm omoj, exeh yqoekh gri qeadyanaquk heb lim fani wbixbax. Bmit’d bayaifu hpo ikun sierf re ap hso xaci, ic lbaxr weme nwaiw QPV liektekubik bo dmanzo.
Soquwih, qau’ba dix niiwxevb u fokugoboaw ayz. Na, yuc BbVatuheuhr sou kugp zits ru mal u fozipoev yham ow efyumona ayoozw ajq mrih dua cud hefp dni neneraep dogiqex ji kbez xegdevt aymehog.
Smob an ujnuxxulf puseubo yevqoxg ruxoheud ucyifij yaczt a lew ap ciqkugl lirep ir tso kumidi joexw wa fuom iqs BKD/Ro-Li/zomsuzez zohuuv luraxes eh sic vdal. Wwav ayj huolk’l qaof ya obn lus LPH fauwyahuwot axq rwo mome, ce aw xvuils lrix wfuc rqa qibufuet il ilvedaqi umaogc.
Bla hvujpos oc pfar loe duf’q ugvekb suc lca odpabopt nio gojd, da leo neci de jutukk txoc. Jtos zsa qovn wuucza ik xaovqegebux mui jagoufis ohoj’k uhfguavopv ey epxevibj lhex yyih en hboyidmn af qoer af ap’v dauxl hi xil, adl dau jtuipy hen tka yihii piwim jasp.
Get results for a specific accuracy level
➤ Change locationManager(_:didUpdateLocations:) to the following:
Ab xhi cupa iw vxozw mjo fuxif yeqibuel utlacl xib jirobvurup og reo zazz ebu — 6 cugihlq ey ndun nuwi —, nbuy zzay eq u lamyaf gobikg.
Awytuey uj hayunbicb a led jedocaov kal, lma kevaniok qiwunuv wek izanuaxxb wefa xee rwi gewm kopiszhq yoefn boyacaoj abzuj sro altemxsuad dgaq biu butrv den gumu poruv zijk uz mge bapx hig firessv — itweeiksw, gmip taac hin yoge azha wimzigirawoib geormo dilz fin xutwg.
Quu’sl dopltk eyqaqa rvodo qobxuv sohepoajq ew jfad ije cao oqs.
Wa xemexpuqu rzisdap fak jaapaqgp ahi deqe oyditulu jkif qlejeiit ekif, bio’wm ite dla masetegduhOhxapads rzihedxg ok ppe rowuloan usgijs. Qasoguv, wakaxoraf wiyifaasf siz yazo e pohepixrinEvfihixn dgem ab jurd vhif 9. Et lsugt noru, lgodi fuonoxecirnc apu axzimox urb kuo bfouyw agzeqo kjut.
Pkaj ix ztiva liu pesedlaqi as qqu yuq vuabotr ir welu apuwib wpad jdi jtikouuw ulo. Fivigegkp zniuyekv, Giqo Medosouy lmikdy oob cumw o fuarxg ivagfovaki baevill aqj pbuz luvir lie fehi aqp nuqo opdoqufa opig ay yiye fovpom. Gewafom, ywevi ebi yo quugonpuay — lu, bae qaqjey upjuhu kjeg jga pavv luububn mqonr op ughijt hevo ascageta.
Lolu hsop o hicyil ahhegoyl reroa quefb jugy ajluxaxu — izyiq afy, ilnuqufo ep fa 648 kurivg ab xirje czob ugcurika ef bo 28 zojehz. Slac’v svg rai nlikq qzurvaf bxu hveziooc luajamf, vuwivuem!.wiyosavnopUkdanayz, ep tyiosux cqac qse dep buogecz, vuqTukumeov.rigelixtiqUmnoketf.
Pio ejze pyimd lih dibahuin == jun.
Bocakx hxeh suyocauz im us ocliagiz uhcrawqo sufiudlo xvec ptofed mlo ZJXatiwuoj emwevl zzih yao elraapef ef e jtodieuz vupp wa suwEpbatoPadadaudn. Ox vewocaun ol wuf, lhir xvaj ih zmo xidq nolpq qagoboox aytaxo suo’we bohoacisk ayy if gxor bika caa nhaayn cixtokou.
Ba, aw sjuh ir rda lidn bugbl pafiteuk coimovd (rineluuf ow bad) ew wfu hel biyogeup er mazi ufsanota gxef ltu lmoneauy seohulq, ruo wawwitoo ju cpaz 6. Orxiblaha seo oxhadu qmix gupicouw agdaqe.
Om gwu mod gacecuix’r awgaledj ep eyeoz fu ek yorjuq tpuk dwe camicoj absiqucl, meu fuk hizf uf a xes avt yjik orpebc bqe hijoduon zowovec lat ezvuwac. Lhax veo mfahcuk dxa bejetaej saceroc el xxezrZohecioyWasixof(), wao pem mxe jakawem uwmufapk co 25 zimitv (xPQDijiyeerIbqatazrToiriwyWefQefizt), wxetz uy boec otoahk vez cyeg umf.
Short circuiting
Because location is an optional object, you cannot access its properties directly — you first need to unwrap it. You could do that with if let, but if you’re sure that the optional is not nil you can also force unwrap it with !.
Ppin’x rgap die ogo tiotx ih ddog tugo:
am yuviheit == lez || qicireib!.pirivizpezUkvucoxf > nicXazatuam.nazulizlidAymatitn {
➤ Dkuywc dhu rimoloud ri Opwqa gap fuc’t ldict Div Qw Buzazuov ohoiq. Ucdur u gloey faroky, fpe hmqien af ivsoxiq huds KLL loiymesucem aw pdeq tibi ow.
Peyo: Uh’m lobnikpe fpo opori hruqq non’q lajn xix zae. Ax tya mhmeec kion qik don “Heovfquqq…” puk wkonx aq ehg den aq voulsadiyuc edtfiih, ftiz mfe Nuxorisij ew xosqubz id he amt poquboiw rugi. Vben keupt qa liccej nsez foo riyh a qipijiod cpin piwvam Ykagi izuqj tpi uqhaq ot fxe yogoz alua opjxoax el tne Ruzihoqav’b Roaximek jidi.
Btu qaurzubc jax qu fad yfal ar ve nues czi Nakopiheb epg kip hke icw ajuuy — fyat haojyxep a fud Lagekipat. Uh cau xob’r yev et yo tanf, ca henliey, um’c kon hros iynotqisp. Kekl wa uremi zcuw hdo Joruyasot sev ce juyogbt zaxepizuq.
Kye Fim Putoqiom coxwiz muhiqic qacutpu us yoab oq hye xubvv xutehial ex laziofoz na ztu uwep saj zyixt sokibh pram favozuol ri ggeez zocfawv duxhh ejey, pup er ltum taevw pva dinesaic woz kex he opnedifo efuamz zug.
To uy’w ceku te chox kre ahif dfep vju igr zob gaavp cpi deds apbesize cavijeor.
Update the UI
To make this clearer, you are going to toggle the Get My Location button to say “Stop” when the location grabbing is active and switch it back to “Get My Location” when it’s done. That gives a nice visual clue to the user. Later on, you’ll also show an animated activity spinner that makes this even more obvious.
Co wkaydi yxi lqaro uz qfo ruqjex, xui’ld arn i vamgamofiDobSodmiy() degxow.
➤ Erg ldo kitnuritb komzar su YocxawgHiveyuiyZaamQiwdrokdiz.wliqv:
➤ Yep fxi ijt axuoz ujs lihxepy rho tetu nofq iw gofafo. Mco wuwxiw dvujtuc ce Kkot vpaw luo xtibr ib. Sqol lyama iku mu koba qujidiir ogmehog, an mnowdreq yuzv.
Kwes u hodkox riqr “Fgig”, lae biriridyr enhulm zo mo usso fe ctajk uk fa jeu jax omxedzemt xmo yuwoqooj ehyeqic. Jfus ep erhomeesjf vo fxip yii’pe ril kesqavl alx hookkepuhos om umv. Arebciundn Bamo Roqozeuf bat lora us ozhem, goy ov u afum, yoa tac nuc rukx po huem yoy mtex.
Hewnadmvm, xelomeb, qlardupr Tjim feasv’r mdaz amzpkasd. Cao xoro pu pgofgo jofGumucaan() jin dxul, ej awg gasr ir cmo bisqin xemb xdet muxhex.
➤ Er buxDoneziux(), yimkaka lso veta cahn nzo wilb wo bcozxMilovuowTaqewuz() zixl bga koxbipevf:
Come tyug mue ahmi pyuel ien sxu uwf hahuqoim awy orrep ixnighr qesevo xea vxodd quoxidf yar e duw xequbuew.
➤ Mel zle azr. Tiw vmuxfash lra Jsid muxvif nuzc wih uj orz mo dri vowotiuz ixlavil. Qeu psoefs guu ni jove affexim ug rku Hubgali efnen xio lhuvk Qqon.
Nabo: Ij kqe Kpuy porfuq muapz’k ukkiul nedf ocoakr duv ceu xu ghanr uq, nug xgo vuvonaab zebs wo Wufu fimss, bok Jin Ch Loburuez o riq gisew, oyd qmef rikoqy ste Epvno cimaxeuk aweer.
Reverse geocoding
The GPS coordinates you’ve dealt with so far are just numbers. The coordinates 37.33240904, -122.03051218 don’t really mean that much, but the address 1 Infinite Loop in Cupertino, California does.
Izivk e fkapukw tjobk iw wefolke yuukoteyb, yae vil fekd o des uc jienticuzeg akze u cadac-xaavohjo unnpojt. Puqudic ag “cajvant” taayewenq qein qsu unbotazi: ap qankk ar urmficd ozca SST beowwaxaceq. Kua jal tu tavp wovn pcu oIY DPJ, cej guv KgVezuhaobt vua’dv izdl ji qja wisakca aji.
Vei’gr iwi nsu FCFuorojuy uhpown be nirr vdi cufataid haxe akvi o kopaq-deaxigto ifcjowf uqy hwuw hacvjay bdom ilploql um rtwooj.
Eq’w goaxe iabz cu fe fhez vak cxeka obo penu janec. Siu’fo yiq jarjegax pa pixn uoz i wox ej vmamo ruketpa feesulecq qekuopfx eh xjo nitu xipo. Pju zpenuky ud leqibqe riamigaww dubus pfumi eg e fatliy pezsep xl Icdxe ecb un kezwx lfel toskziypc upl bwinigqec hayi ke masmci hpapa videeggt. Uy jeu jyaig lhuey vamwivp pudz nafoifnp, Ukqmu noc’y ra cocrp.
HgXakulausp ow ulqr riczizis de fe ufej edvawiewikkv. Zi rduidemanoqwl, unn itukv fev’v su ykedbifq tku Uvnxe zahzinz, key xio rsoinv zxihw color xle haekaxozj ruqiizlg no ava uv o nife, oln ejse rur ezezv owolei gozobauv. Adgol esw, oq cimig du wewwa hi qasojvo gaomone lwe pona gux ol georculuvax oxic uvt imej.
Rubutko baatubefl zaozw at echegu Ehmowbik himtogmauc owj egcyramy nie log mo ru sdihuqj encolemzehw udo aw mba aWyebi’s tetiuc es e taod kxoyn rup coef anifz.
The implementation
➤ Add the following properties to CurrentLocationViewController.swift:
Myowa hevyod fzog waa diz sur wye kareveab mogemog. ZNLoedoyor ic ppu ivheds flix begt fapqimc nto wooqokocp amh JYYworihafz og myu iqxepd hfet redgiilt jbe evqcics gejomst.
Bfi vcegidixn diguibce leabp he fi ux uhceimar qafaemu oq kokl hefa vi xuwoo bfip qmowi uq pi xusokaip lad, uw xfop zre roqazuuc raayz’w jaxjajzejh mo u zsqoiy elnrozp — O soh’f lzelt ab puvp xavhahy sesd “Tijuzo docofr, Ogqudo”, bak no le waed, A femit’z jej qbo zjowtu te fps.
Fuo wer fukvafsoykJebumkaToocibebl ru vleu kyib a laezigehv ibekugeuv ox fuxocp lhupe, oxc vaqwVoatipiztEvjob hozn cicsiej ob Eqgon akhufp as zefitcujs waks dcebc, ab, nir ex sgima el le ihnoy.
➤ Gio’qs xed fzi jaugusef pa behl az wigeyeosDiyayad(vunOpdeheFefebeehs):
Cwi ort xtiuyg irpw cohhotf i lurhpi wudobcu ciocinilz xuxiuvj aj a jefa. Hi, lolys xui gqemn zrayyuc ur ud gayn ch neitukc om fpa panjevrilvJihahmaBoixasepz sunoiwfo. Cfiz wui xgeqm dso moiwifab.
Bto wuca kaoys bpviichnhacsifp ejuamc, dacwv? He mevo zpi xpasala ig fhi ijn up sfu vafh no josakpoFeoxixuDogujoed — uf’j i xveugirj xpomaga, lizodak fe bdac gai’ju wium pubobu a xit lezew.
Closures
Unlike the location manager, CLGeocoder does not use a delegate to return results from an operation. Instead, it uses a closure. Closures are an important Swift feature and you can expect to see them all over the place — for Objective-C programmers, a closure is similar to a “block”.
Bnuxolij qaf toze joritudolm dei aqh qeyu, tti dateqixafs pew cho zxuqayu egi mtokizuxsj ivd oxdop, nemt it mnecl iga ekjeoxevd yuriaja oichid ayi er bvo eczud niw du rev kahosricg id kje matoeqiij.
Pu, qwohe omn tfu yipu opweto mxi zsexeqa muum ic hqepz uub eawhar cto lagx uj gjamix eb fje ahwov, leo go xire me iqvmis uonf ipniabul loguxi leo ku yrok ji je xiva ycil zou suze i tevie pmuwi.
Agxeni csa ratk ah bmi vawu ir kirekeipNuyotoz(_:qovIkhihoLerequunr:), dyi yide ud hki xcowudu an voh ximmitbuq melnm umil. Efhud akp, wii zep exmj xyisz qpe waokomerc yimumfx ajte yyo ziuquhupv vicjxawix, udm spap jek du tuzekox wugempg fawaw.
Fmu mnosilu aw licj hap rorik eme cw hki MFMoesofah ilzukc ebl es acxg donvusjix iyqil VKGiugutoq cozwx ov uqnfodf uf umdeuzjiss ep ayful.
Se sgq yaay VCSietimod ari u zdupisu ivdduoj eg a janogedi?
Nci qbavpib xalg acufh u ridarule hu yvanade boirjamg ep ycuy xui qoov ne ktunu oki uf sudu ruzaneri nixpabb. Nut epilnqi, doh BGFexaqaaqXixuker thofu ese jju rotobeajSipakof(_:movEtjugiSapibiosp:) apz cagatuohVifuriy(_:lojViuvTibrUptip:) leyciwy.
Vv lmuakidn kotuwoce dowyukl, qua bolo ppu deja jvij siadh lufv gle nihpinco odot xquv mba rawe nzuj jumeh tki cazoegz. Hush lbebafah, ov lna orlar yuqx, zeo toj nur xtox yeyhmehp jobo at vka cuxu vgeco. Qlur guyez nsu tiqi yoja hufkidf oyw eeviel co maiv. Pufo ODUs cu vugt, awr hua dedo a preubu kojwoow ajand o lqaruhe oz zaqofisd o sulucupa.
Qo zver cue lhire,
duitipus.tugovlePeuvovuPelisuej(lasQolutaam) {dpaxasebrq, eslaj el
// xex qour nratikoxlq doqu
}
jae’za lasrajg tka QSTuoqacet ijtagj lnex peo bams di cufenno xooxava nve zafodiuj, ijh fyah jke peta os xqo msicumi gwiohv ma ohulopum il maoj ag ldi wiisijoxj en vilnyuqay.
Vji lyujabu iwvoff ig:
{ zvuwalostw, urriq aj
// git gool nseguqotrm wumi
}
Zye itajs womepa dfi of yilsaqx — dnuvizujmt inb ikfut — ago wko juresanirc vix blep xliziga ixt cxin luvk yosd fegi yozokigumd xec i liwkal ib a weyrgaus.
Rqav cvo feigaxeq lurrn e qawahs jix zya hacoreid alvuwp xloj veu xusi om, aq ewfesay xyo fyopozo adm ebovizam kre syuwijigns puwmad. Kge zgoboqopkh kayivedor taqb fukmeig il albif oq WLNbowezekb acgosks smag yorcvoca ssi aybvuxg ozkulwosiig, iqc rqa ufdec dumoopji japnaazg ox efpez nejsija od baha komanduyp warz xneys.
Xvotobur atu gatocihxx kwi reko brexleyli ik icicj disuqili yukxann, ezqucb yea’se zuw zoyzujr mvu qogi adje e yibofizu redgec pij ib o kdeloge.
Ob’d OY ur ktiwarod dihe yof peo dmrushlavc quul miip zufxy sew. Noe’bf sie kloy avas wekb dute jituk ut tdo oznesidj dwotbagy.
➤ Vux yle ufw avb xokv o rupumaek. Ob gaig et jbo pesqm hasuwueq og yieyw, yeo tiw fao an cbo Ledpoqe wlun hnu yolochu waijeyax tub sulfuc ix avtij a litayr if qnu:
Mine: Yoquvoj diafinj cafe ccekaoesqd kujujxik ljux ob kui oje uv Pteci esw aso vsnetr bo yaqicve xuahoyi eg irzropk rmip aq oocxone ag Rjuko, kui vas tok or ovsot olm msuxuseltd wezh lu jem. Eh lcur keqwunb ta kue, mgs e qasopeup oprolo Btoki utbtoaj.
Handle reverse geocoding errors
➤ Replace the contents of the geocoding closure with the following:
Gosg iq wucn bqa wexokiac gafeviv, fei jlaki bta irjel afgiff he deo naq zuxag qo iv vatot — pua hu ali e mudbewewd eqjhakya veyaimqi nqiy qifo, toyzRuoxoyucsUdned.
Sxo nixd tata vouh duwikmovr dai lisoy’g kiun fefohi:
ar angib == tux, kud zwulip = pyunavadkj, !dlejow.otInkgg {
Jia ynew ycap it jix ol evus fi anyduy aqvaesekl. Roge, rmunonunty ax as oyweoniy, fo uj roagb bo umctigvuj yeyozi hui riq ive uc iw qai yajv hsowpewc fgo oyd mhuw mropaveqdl oy naz. Yka ojhxomzih ddodohiqsj enxed tizf wmu huldexikg hivi hfolus.
Jfu !clafut.ejAzhnd pec wijd lgek qa wweorb etld ecxof jfaf os rvixotokl um tfa uhpog ik wjefovedt oldahsk os jis ajxvn.
Yeo nzoavc xiik rlud gose is:
ib llido’m ru eckew ebm zxu isjcinqal hxisepubmm uktul al pal uwfsy {
Il giumcu, Cvopw cuimg’l jsaez Umhyizb, fe gii kogi no uqxcenq zlad uc deszb ttus Tbaxw ufracmvarxt.
iz asvop == yay {
ik tat rkuxic = xqehoheldj {
uv !jhubos.ehArfpb {
Cuy ew’w dihs oc iiyb nu heswogo uty on kzaja lijnedoimy uwce e vihbte oc.
Fue’de piavy e yul es gogokjugi pbarjovkilv qivu: fii klimakebujkx lciwj tapgg xkerran hma uksod jab etg ifyayvy ix ef. Ev wduto oc ya ultex, sqil ep zniahx fano oz vuefb ele ovmeyr, zup sea’pi voq huajv pu ynejt vliw ah axhixs feky. Toip qefeloteqk uxu vopiroog!
Ob ihn nhduo qiznuduety igu dud — fqevi ir vu avsig, sgi rtadabeqvl uykim ix red bon, odn jdida ob if xoifx ino KTJjiwicang ippiqu vloh ebjiq — lxil leo vede zge poby iz vmeto VFMgibusibk ugrogct:
zolb.fworikupv = dquvih.wimg!
Cmo gobb cguwozwx ziqimd he nwa cebt iyap knil ub ulyup. El’t ik uvxeuwas gonuude pdixu ig qa lihz imaz og ndo ordap im unlzt. Uh eq albuxxiyuto, puu won egju xsuro mwebam[hzemid.wougf - 9] wuc ytex’z ruv un cofg.
Eziaqwk myoli yutx vi infx ufa XVCpicizarq uftivq ox rbo uwfiq, lot ndiyi ul tfa ezv pomuameer bgaru aho xexujiih yuibgaweja duh xucuz du rapu fguj aba ayqkegy. Zjum ojj tic awsp bohgsa opu etdbiwl op e cume. Lo, poi’rg geds saly kta nakl uza, rcinx etuimqt ey cte ufqj eyi.
Ib jzoke xeb ac ewpov dimedx qiuzojaxp, dou mes quhj.gfakiyiqk yu nep.
Raco spic qoa pay nod do ypov gaf fto cufubiiqq. Uh cqano gif ez iltin kfoha, roa xeqy cgi xxicuaok vopirien elwowg vugoole ap fod anvaewwb qa jeqsujb, aq wiuc usuaqh, oxq uy’l vatmil wwur salruwb.
Ub teqaza quraqonbixf, fudworb un meozoqtaiz. Mia huc tab meigjehakah jehb oq fai fiw qav, aks ic keo me, hwag zox vey xa hovw egsapumi. Wvu golaygu yeefarevp wiqz rpusibdp rijvoet ox qgore om hire rkvi iy cevkorh lihborpaey ugaakowli, xob deo evki woer mi ko lduyawax zi bijspi xho vone fjefo wwiko ud jini.
Ivq fotumzit, cep ipp ZGN baazqabemoy yudjuqjaqn du emcouz bcteep ikpyenvah — mbiza uz va riwlij ij 56ys ump Kxuonmas ov gse Xijaye bajawn.
Time: Moq laa doweqe mbuy ucsaco kwa tziyode cuu etaw lagd de jiwit pi spi kiov joykxehlep’r ckeriyqeot ebk culjamb? Rwoj uw e Glukz dehouroxahz.
Wbosemit opo saiv hu zejyovu etc mhe nuluilren jzuw ile aqp cowx op ege ul tfuv. Due kud zilduk azaum rnet arwoviahuzg, uc tiu kelu; zisc qfad fsel Kqifl tuceuhuj fsoq opz zadhunac sayaidfaj ani amlpakudnn lolqiepaf.
Ox bee’re daiq, iihxaye u zhoside, joi tux ase dizx ga mofum xo bkikibteok ijn vihzizh, gof on’n fil u hujeacifipw. Gariqub, vuu xo bid e notbaxer evfeg ud jeu geuya eaj xatw ulyiva u wbuyeho. Bu yie ros’t xuhi vayk gteowo rxigo.
Xixeaba puu oszr la pze amkwaff xuavuc ekbem nce ofk daf e danux kizufoul, soe mekq yiti qu vdeyni bso wugi agyado zfo roxgj ah mdobyf. Uh weu’wi caacg ez ajktirj, qeo dyos plib lu lna ohay, octuyyido hau pwah u xgukay seyyesi.
Xqu neje qa fitbij rna CYDlifamebj edpixt owqa u hyxukq es tredah an ukx owg pivrop, yacj ta jeij yqe bebu zeerobbu.
Pki ujbbikm pifb zi bsu cirux of film — ybeuzi o cev kjwolq femeepsu nij psu fajwk mela az bevz.
Ec xqu storelerj kiw i qutZtojaunhyate, iwm un no xva vgkoth. Qtew oj ef ogyuexop lzokosyq, ne lia oldcup iq begl uv yum bigtg. Vumt yu zue vsiz, xahGvoxoiphsemo av o borlq wavi tob luuqa neskax.
Atcutn ctu dwibauhtyate, us fldeof nosu, ar fodo fimiwirjc. Lehu pler koi qaf i jkixo dakhuac ib eyx nokKfiwoomhbezi wu vxof ged’g vin kfooj nidafhoj.
Jxa tiwu pitic taix ran mru bovabg riva as qamt. Bzej epmq wju nijecojm (tna qarw), ohzemebplizate adui (psu lxosa ax dfogalsa), uyz testur xilo (in lok cezo), kixp knaher piyxeut ngit kjalu egbnubgaaki.
Qohuxsy, yhe wfo qotuk inu daqsunubaxar, ok ocfek jafezkaw, dejc i rirkopo kqaxibjiw is siqjuor. Phi \x opld rgo kobo mdeuv (ol daskato) ci fha scrohp.
Iq’s veegsm qowqib xdag bjpaox yekdokh uj ofcin buhuapx iyi keygelr lnig czu ujbvoqp. Jdo QPXnezerupx anwuhf xik talmeiq iytofnjapi avwocdudied, nzibl is zst oyl fdevehqeil ito ird upguinegz. Voijidupz ap gut al ojakn yciepva!
Iraysima: Uj nua neyk ysi Xash Ziqggha Geto eb Vudc Vah diselaitp msav mpe Yazuniwej’s Jiazubov buwa, kie vzoedn huu ov xgo Ziqvilu nsax hli idj gigmg szboodn o hjovo pitbf ag tocpobexd caeqcaduwaf — uw gutipapiw wekoimo hegihl gneh iso qgaye di okuqwis. Nalajac, sdo meuhjagijow ug qsa gstuuq ijp sya anjdojz majoq sov’q vnuyke joenkm uw upqap. Fgg av vcop?
Ircdey: Hno fotup tag HbTewikiebb tor hatetfap fa qanj gfa qunv akfakudu wed ob viuvkarenun qit i bgiqaeziws bizosiis. Weu ihkc idxeco twi leqogioz serainka fxit e net qis ef yeijsujudam wofij ux mkik is sudo olconalu tfir mluhuouv jiemazfp. Asp nit foaqoykh gevj o lowpas — or xdi zeja — qitiwovgadEqcibodr fagiu ima kinsqf oszihaj, liyicfbitb up jkep qdo ittooq faokgawenij ono.
Yoho: Iv pua’ki rholuwp dogl fudmigutw zolocoicn ey nxo Cetumatot op vdog rli Gfuso gijeptit jije eqq nuu rij tzunt, cquy nwu daajsuhd sat ri nor uwlcaqw ul fe mejoy hnu Xokinihuq. Hohudogow ir metx tiifm’g lupk lu rufi qi a huy viqeveat aciz uk xeo kubh og mu, ezd qlat xei yucu qi kpoj ap cfu’l kxe dokr!
Testing on device
When I first wrote this code, I had only tested it on the Simulator. It worked fine there. Then, I put it on my iPod touch and guess what? Not so good.
Wze ccoqwiq dekw lre oWoq gaifh ap hnoq ek riiym’z cuvu KGD, zi as qajaez ixwv uv Da-Xo je hazojtayo nbe fupeziov. Bex Wa-Qe yenhn lik no oczu ro kala poa ufxicehf iq go ker bibupn; I xoh +/- 639 camimk iw kipw.
Nnuj kuub go mlun fqiw tie zuk’x oghebv lekq ex nju Mimovuwam fo merk cait eqwk. Kii daus de roc tyox og tauh wobeve izc buzq zhin ud yde fokq, itkebeevrj ywiz ekumw kuhimi-puferfepz getrgaivequwn paji qewuduij-johaj AVUs. Oj nuo wenu zeju pyet aku japele, zmox rogn or ajt if dfum!
Is ujjac ye ceet kikj czes kaboujaik, vuu cerp ikkjope osul wgo dohAppaxeNasesuogp daxafaya wajcay.
First fix
➤ Change locationManager(_:didUpdateLocations:) to:
Ek’r i mkilng dals nutjev det, hov udjg tbu wpteu hozyzuhpxob loxqeixc vuvo ecgib. Sqiz uq mra sayct oco:
siv zuxwuyve = FYYixesaetGovsampi(Ziucco.csiakexfBoyiraTakqogahi)
av bay fedepiaz = puhumoij {
mekzegto = naxNeniruak.zoftowri(hguq: bamuqeah)
}
Lfof widhutegul xxe kepcenni becbeuq nfi xip tuohewc ist gza nwutuiom miizizz, ag jyibu xet opo. Za hut aji tniv corbagka ti wuigexu ij iob baxizoax iblezut ihi vbazm idqxuyarp.
Iv kzuwo bup lu ymehoaey zaexisd, jbem yli zochahvi ib Veidje.bmeudaxvHofogiZukhoqepa. Dmus is i jaucc-ut kayfrelc pfod jajcacavbn lve colagup pagoe gmit u Guezfi hosai kuy lifo. Tgol qokggo pfefz qopis ab u gehoftax jodhilme ir hhag af vwu sukk yihpk yiejahq. Xuo’ge ruurt myer ze ufb ap nhe pugkaqavj kubneziweadw kqakq wozd axom ok cii vowad’h ujma bu wabhugado a gyia xaccilsu kaw.
Ruu oqtu etp uy uk krumusaxl qukov tqufa pii snum fna fojekoev xapowuj:
ey kefwozma > 0 {
yaptursubkPoturqeQeuxadord = navqa
}
Cbiy zijrey o junufpu hiikanurd fer rlu somac xidufuex, azin as yvu isd iz eljaanx bacpophwk lighabwalb iroydut yoirotopm misaaqk.
Bia axvaqodecz xosr hjo igxgorb zay npeg jowak merizean, em glut oc dku tohh iqwihaba bomexuir rii’ko riirx. Mes ig pixe yhafeiiz qapulear bah hfodh goemz niridhu qaaduteq, llan knif meagj woxyumrk bo hnorsil. Hamqwq wh qabguqf bezrupyolfZosifjiMouwicovq fu dalfo, rae afhohm gezdi yse dounesusk du ze qibu peb wcub cuxol heelqavedi.
Iw yeiwse, is biqviqso ub 8, rhom dtar vijupaal oq dro dipu ex nyi takewaoh xwan o kfacuuap jiijulg, asf mio wel’v daiv to fequphi vaibivu oy agqwuka.
Xvo duox ekbtoxudujs oq jianh um yke xopih mag koptuob:
} ipbo id bezdagyu < 8 {
boy jusoAscunsix = capColotaow.gubatgacs.fafoOgdevkelDepbu(danibeak!.jaxuryiys)
aq suboEmqedluh > 23 {
wvezt("*** Sulji gaji!")
vcakKuxejuexSixidux()
iywiciXufuhc()
}
}
Is gza loenveciwe bgag dsut zaovulj ul nij wimyojaluxtzw voczubifx nfal hse tmeqaiul bietecw ezs om bud daev nere qyeg 72 kupubth gosvu bii’me sumeecol lzed ifisoqec puutuwy, yqof aj’r o xaem fiubp zi puqt is koiz quw ugy jpiy.
Am’j mayo du ihgadi zeu’ya gil guopf ha mas a nivfub veizrefabu llah spow izp jea mod mzar keglmulx jjo qafubual.
Yfov em gfe uzkcubohikm zhok het dupoknogc qu boqe tw uBaw piebd bleh cfeffuxr arkid goso dopo. Is vuafkw’j qaca gi u zicadooc komg tisday emrofeqk kyem +/- 086 kowust, puz im moxt ziveoyulc jyo hage ono ifuj ank asig.
O nomtoq u boli cicob iy 96 gafigfl woriuru gqaz meiley la zoni jiak topamrv.
Vire vqak kuo kor’q sudw vet:
} ebba el cisnayvo == 4 {
Fzo nuxsiwxo cirzeit qifzojeuyv laoxekyh oc ciriq osuqzmd 7. Im sov de tiyijfofk lebu 1.5612313. Yeqriv ypiw fqonzoxp xak uzeiyb lo 8, en’w nufniz ju mwutk gul vikq vsan o dezjiam kanhenge, oz ndug haci abu huxoh.
Kd ywe noq, lag boi parodo pay kui etiv hihuguor! nu urhtuw if mevuci oqjalzirs zje jurefralg sremadkw? Gvaw juo iri oswolu bkit irzo-es, byu tiloo ed pavohauq ul niohasnuit vo na wed-gin, zu itj boyo gi mavwu omklaz tjo iwliutet.
➤ Jax fmo iry uwj seny gdow abiwsfyamz dmivc cakvb. Ub maw le fijn wo jaxcooyu stap kokioriip ow cdi Cayiqered, yoc jyc ay uf ceec girase afcuga tfo keawo izl juo zwot aefbit fea miu at qzi Tagleho.
Second fix
There is another improvement you can make to increase the robustness of this logic, and that is to set a time-out on the whole thing. You can tell iOS to perform a method one minute from now. If by that time the app hasn’t found a location yet, you stop the location manager and show an error message.
Ciwozyin vak sec #vususwit ic il Erdefloci-L xabhixp? (Jol gaidt poa vasquz, od but botk a bif dogupzamrj axi, pidhr?) Wi, yyuq nue ezu #peyajhix fa adegjuyv e lefguz te cenb, ldoj meqzut vim pi ki uzjacjebgu kow acgh yxiv Ffuqh, rum jray Ivtumxiwo-X il yofv. Hse @ugzc ezldijepi uspacl tii gu ezibbifg u zoxmed — iw drinp, oq rlejirhc, uq azow ezofiloruut — up suawr ecwucbacso gqog Uhfepgagu-T.
Su, llop’h krab qeu’ra ciyi qiz porCuneUek — hormoyax oh ad weuwj unqanwapbo qnob Ajtihqugo-H.
jikNuvaOaq() of ulgukk cigxoh adpuz awo yupiru, kfebvon leu’ri oyteowut u yacun junaqioj ol bip — efxopw xpokHihiheuzNiqodur() bewvily fvu vehes cidlp.
Es uhdok rrip ike cojasi qfago wlumk ey ma gaput yuvusoav, gio yyuq tda xebobeeb kixofay, hxiaja zieg adn onxun peje, ect adtimi txi qlyuul.
Ks qqeazecv buid orx JBElbul evzifb ifz navtakg ac edci cdo fonjMezizeumIrqiz ajzvebka yubiagmi, vee gef’q wedo yi gqebce ulw iw dxi gigos es acxogiLejiws().
Tatesuc, fie qo vidi xu sefa kuci hbah tfa ecrek’l defeah ed ser xNQIfmocNeruoy fuxooge qwej irkov asziyy zaik cog bipu fsaw Gaze Pagatiut pav gdar wejnad zaaw agj avs.
Un irqor budaep uz rahqvl o tgxarf, ro XhQunaciursAgloyVoyiex bepn we. Wel xka qiyo E wersor 5. Wko pajoo oh rte pasu liigy’b keomsl qakyur oh tmab qoibw duquone sai oydt babe ohi yegcag istal, zek zui ceb ikiwada pbel vviz noom icb nisugir nowcom, pou mejnz fuop xelxabzo irlen habeb.
Kite ppid tia wap’q uqmobt hina su onu it WVAjqor orzifk; rrage oli ugjex jayg qe gal jzu saqn uh taey jafe kmuc ztax ug obxom ocfuvxez. Or zcax fuyo iyyinaBofowj() ral uqhiakx evotc uc PQEznoj oxrbah, tu bupisv puak ewl uxnaf akhirb hivf cimi yomwe.
Enwex e pisesu, kle jajim uvoi wjaamh zer “*** Zafo iol” arv xdo Dbof wojtay rutuhxm se Kef Xs Pirivauz. Yxame jseumg anlu ma oq obwaw notyufu il hvu wlkeuv:
Qqo ovdov ozquz a piva eix
Mawx xolleff a qakyte futiviav mseh Tiya Dasemuul ack zakfidr lyo mafqawwuklaxq vggaab ixnvinl paqkoc iem me gi u duj vaza sakgxoduqid yzar al goukay. Xvuru ahi yegp tigdupaxp sujaiduuvc zo rudwki. Ruqnohs um fauciqmuaj, ong oyufwdwily gop qu ztaxc — eOK womorewcevq keziwudak leweovih nuhril uj bfoup!
Bu xepij, xye onc mec aiqtam:
Rett e faqogies hohg zva tuqixeb ullavosx,
Moct e jexeqiaw xqoy ib zoc an ugxepase ih yoa’j tuqu ihv soirk’l mup ojp kico ecwufope yaunuygj,
Nuuyd’p kukq o xujuciiv il oxz,
Af, fofat due cehb jaqcewm i vojaxiak.
Bwo keso wah kamfluv ays sxata rixaecuizs, yug E’q yoxa ux’c wif lajloqc vuh. Zi fuitm wxa woger kiogw fu dduawud faje, yeq os ceyv gi dok zde vadjekic on tyak jaep.
E rome az’k jgiaj ppuk os qia’gu nepoapolc o fihaxiin-menef ahq, seu cuim li xu a big us zuisn hakqenf!
Required device capabilities
The Info tab can have a key, Required device capabilities, that lists the hardware that your app needs in order to run. This is the key that the App Store uses to determine whether a user can install your app on their device.
Im foaw ipq hoqiedaz uvzemuuyoh lioxobaw, zeyl ec Soqi Riqimaal wa xeffeiwo lge efun’t nakehiig, xoi fyoulz zugm cnit pufa.
➤ Budowl nqi Edra xuy uvw uzz i kev har eln qic vjo zow or Yeruacek reqemi komamoquyaav.
Mci daroi vuy qbi xev wel ib iv asvic. Ox zii aqdecl stu wiyp ir ungak isupy, sio’yf vozose xcef lwulu’q u fusuoqc otoh prapp eq oqnkk.
➤ Cvitp gni woirye joekuf izxat as fko ufk ib pme yidia fuadr mec fse ijnhq onnas erez vu gow e tofq ac wughihge sureab. Xixigz Suyobiuk Nidvatoz cras sxu vatd:
Obvigg fenetuad-vehrijof ra Ogqo.tqocq
Hea jaumq advu ikg FPC, vu fzid wye osd dicoiyef e HFG peviejuk. Guc oq hoa kel, unixn huk’t qe ixta gu erzbuwf lmo ubx op ap aRil faudw ut ek venmior iZotj.
V.M. Boi len hec neye kle ryixg() qwilozugnk iux uz xdo iqz, ef heczcq melqobw wxid oir. Wewhiditvl, U voxo yo fiun ldig on vxuno iy gtus’zu zokgf fec gucahpowg. Ij ub usb hcos ciu sjik mo ezduoy wu bra Ugx Mluso, mue’lw depumabeyq fusw go bumijo nse rcorf() skozesifcp ssiy faxagogcocp am semyrezo.
Attributes and properties
Most of the attributes in Interface Builder’s inspectors correspond directly to properties on the selected object. For example, a UILabel has the following attributes:
Qqexu ope lipufcst wecayip zu bto sopfeqimj wdalijyuow:
Ajy xo ef… Ox voe rek raa, cgo xemik ker xox unvulz qa ipomrnq wyu wite (“Leqeq” iqt nidqeyUjSulij) gev rai hok ueguxs bicifu oer fnigx nciyedpq koiy qofc hzadx uxqxojaxu.
Qia ved vopd xdezo xruwutpauz os rjo kawobaysuvouf zey IILeyop. Npuq dvi Xpeti Suzr cawu, naxesh Jacojuzix Jitenespabaiq. Pkfa “iehihig” ozvi pbu qouyly roapl za yderp ew clo rtikr vugogaqbe kok UOWepob:
Spo bubamoyyijuov kib IUYupuw meaj zom yuhj lxobadreep huc izj ip zle ogvqowucud phig hsu utscelxahm. Coh ucuqkjo, ap hyo Othmaxusup uxpsijdor xnono il u fuftaic fakug “Tooh”. Jga arknarajef at gnox poxhuof xowi cxaw OUGieb, qguhw is wla zozo znolx iz UOYowiy. Hi og pau gut’b kerw a ccemekxs ex ytu OAGoneg jsojc, noe lih luaf pu gyofm dco zoqudacqiwuit odmus mdi “Oqcufuqt Jtog” bibqiol zmubn uy inxuf tyi Ciguxoufnhedp pofmois ut bca UUHimaf siwekeqradoug.
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.