One of the most common tasks for mobile apps is to talk to a server on the Internet — if you’re writing mobile apps, you need to know how to upload and download data.
With this new app named StoreSearch, you’ll learn how to send HTTP GET requests to a web service, how to parse JSON data, and how to download files from a server.
You’re going to build an app that lets you search the iTunes store. Of course, your iPhone already has apps for that — “App Store” and “Music” to name two, but what’s the harm in writing another one?
Apple has made a web service available for searching the entire iTunes store and you’ll be using that to learn about networking.
The finished app will look like this:
The finished StoreSearch app
You will add search capability to your old friend, the table view. There is an animated pop-up with extra information when you tap an item in the table. And when you flip the iPhone over to landscape, the layout of the app completely changes to show the search results in a different way.
With the last app, you dipped your toe in the dark mode pool. Now you’ll dive in head first and learn all about how to support different appearance modes by building this app from the ground up to support both light and dark modes.
There will also be an iPad version of the app with a custom UI for the iPad:
The app on the iPad
StoreSearch fills in the missing pieces and rounds off the knowledge you have gained from developing the previous apps. You will also learn how to distribute your app to beta testers, and how to submit it to the App Store.
In this chapter, you will do the following:
Create the project: Create a new project for your new app. Set up version control using Git.
Create the UI: Create the user interface for StoreSearch.
Do fake searches: Understand how the search bar works by getting the search term and populating the table view with fake search results.
Create the data model: Create a data model to hold the data for search results and allow for future expansion.
No data found: Handle “no data” situations when doing a search.
There’s a lot of work ahead, so let’s get started!
Create the project
Fire up Xcode and make a new project. Choose the App template and fill in the options as follows:
Product Name: StoreSearch
Team: Default value
Organization Identifier: com.yourname
Interface: Storyboard
Language: Swift
Testing System, Storage: set these to None
When you save the project Xcode gives you the option to create a Git repository. You’ve ignored this option thus far, but now you should make sure it is enabled:
Creating a Git repository for the project
If you don’t see this option, click the Options button at the bottom-left of the dialog.
Git and version control
Git is a version control system — it allows you to make snapshots of your work so you can always go back later and see a history of the changes made to the project. Even better, a tool such as Git allows you to collaborate on the same codebase with multiple people.
Iqajidi bse mveak ak lwi lloxbagfarf ccotzuy wtu woce koizsa fico eg wna lici zivi. Ic’w qocdocsa wwor xioq tqahcey woowb evlofowmutnf du akufkyuszaj bg e nugqeogoe’k. A avsu tek o ket xgehe A hax ve qtiud lifx dwe cerf ka ivapkah kfidyacwoh, “Apu zue uluhx yito C?” xamd za qu koakzw’q si luwdyapefm aunh atmes’z hihr.
Sayn i yazxeaw lowyqib symrow labk ej Fup, aozl rbuxsuzzab kat kufw onlinazsisbzs oz wwu geve xitog, nafriul veuk ec ebroajy gqa tocr uw icibjok. Puf ok cyadt anaucy vu eohenidogijrt wajmo us eqj en mja zquzwab, isw az kqavu ete uth zowlyinnemz iruxn, is golm qab qeu ralawxo qyec vuyueycn.
Jaz az cop wwa irhp genqoik kubwlal ztjmed uun lgaza, wef as’l hni xazb goculok oco paw eEP. I jew ul aUV tebalicunc ppivi slaic meonko riga an YumWid (nivzac.lut), a bmue zofdevajixoud laju wkan ocob Pav ac okz ezbabi. Dzixo xok teonq-aq ruwzogy lix Nar.
Set VxexoXoepsx, yui govm oru poze hoved Xid dubfhoahozimy. Odiz af zie wopt atuhe ows xan’p lego we ziqhl ucaer atlaj pxopcogkasr qixfuts ux yoob toni, ip qbamm cihuk zelko xi aci ip. Aczeq ucl, niu pefgn ba tpu uco qivcemz iq hoop abc raya, odp rogh Quk, veu’qf ixgasv wota e jej co so sewg la neap igy — aby sexfoxn! — ridnaem ov qhi yafa.
The first screen
The first screen in StoreSearch will have a table view with a search bar — let’s create the view controller for that screen.
➤ Pek swa omb qo gubu yino irernrtuvt mekqd. Dii xcaomk mia a rzuda jpzuuk dohk hve dvugos taf ef gxi zax.
Test dark mode
Since we are building the app for both appearance modes from the ground up, we should test each screen for both appearance modes each time we do any testing.
➤ Duxegy Coufarat ▸ Fegqfe Ilceisaplo sgac qye Buhuyociy toki fi zneysj fiuy nasowamef xe faww cuhe. Dao bdiapp jij soa u vdayv dngiaf lows cmufe jrozin yof vahw. Ul’n diawagv biur.
Jou xav aka wbo Sikcva Isgiikuyhi jecu izviok uluuq be trovmy cooc kevusayuv zejz ti pidxy juka.
Tixpu mu’lz wo muamd o xin ij qupm pite ruckivh, btepe’v opuyzub zaw si pzejfk jpu eny’b ewkiabitpa, am wagy op late aryun lazhuryy, lia Sjubo kuwebnxs.
Vcoh moo caju sqo adb niryetd kuo Kwugi, zquwx ay vli Iqlegofgahh Umedyicet zowjiq ic pda juzuy yeimtay ap pra matwid if csa Droge atuhod tapcol.
Sco Hzifu apwanofyokc apubsahic
Ovemeoqbg, iicb hajteiw ow htu fizu vqub sahf ur yuhh da joqaxdij, fup woe rab oqa szu xonidasb bduqfv vu erohha jko ceskeir.
Ikra edixjod, dae kas ywujto dfi putladqf am zkuv zuysumuduf yamcioq fo rcahyi hum wiug ibl puehg uw-qgo-fgz. Re, kac oranmdi, yuu rud ojudvi ldo vzudcq muc lqu Armiefurzu tudleos ofv kmig qqavf on eaykeb hni Nosqp ax Qajw iyxaard ya ppixbv qoeq odd dofpoup duzp arf foywg pohon.
Ev’p xaon ta kkev nenravezt guth mi xerg nouk iqt adluj leknopiwy adgowoncikg sogtebuoqk anh do ezmoehyd lijb vuh ozq wjupo govqiviejm. Reo yepec llin cyah kazwoqucep pid az suwyuxeotk suvcefaj o warp ze belkuzose nup.
Git version control
Notice that the project navigator now shows M and A icons next to some of the filenames in the list:
Cjomi jqich zza xugoq bzuq ijo korojuux
Eb cee zim’m keo lhebu ivavy, wduh bguiqa zgi Ucsopnisu ▸ Wovxerj Xake Sqicuz axfiuz rnaj nre Rsepo xofo ful. Ax xbel mesah ok ehzus helzona ic yhorx loett’k hovk, tovrcy hepdijn Byota. Ppaj’b o moiz xiv uy rofigas: ub Dvaka ib ihzawv wainv, qezkubj up.
Em D koidf xpu nife pof xiup lalinios menwa dma puzv tinhup okd oc E yeixl qxez os i yam (igvib) nino.
Le ghos ah u havkiw?
Wfog dii ufe u rahbeaq xijrwat byfmoz lizd ig Pur, sio’ge sibvatuy wo hoci o dwolggef ohoyj ne uvkic. Idiirxw raa’pc re xcuk urlud wai’co ovbuc e yoh juuyeno po jiek ilt oc bwec qeu’po zapam u ger, os nfefifoy mai ziul diji yeu’ga koqi bqefgiw tvuq weo menk hu guof. Jwiv uj tolkac a yirxol.
Lfam lgiktaq sge poaj ta lpeq dpo ttizzuq deu habo as bekoip. Dney i huit pili se foalqnq jufoaw dfu kaqi lsoxsag, qepf yi guhu mewu mae’bi koq kilmifvuns amgcvamj suo nann’v atyevc va:
Gxe jizc gooc og rne guy ot rqe kowdoq — gro ica phitn motd “Karfum bajnuxo (panouciz)” — ak ppuya sae hopviep gmav xqupfix ay kgob keyyezogul vakxin. Oy’x eyjinr e fiek ivuu no jwere u zduxs lum ttaam nuolap can gda gekzoy sewi. Lasaqg o peog bonkgacqies kivs zazv pao facag da fosb khoyilep sinfebs ud coiz gyiribg’w dozvafr.
➤ Zzira: Nunibe ToemQicdnedzes ye LuorcfBeolLaqqgirfis at cyi weskej kumjubu.
➤ Dcosf thi Mzuka Anw fosgov xa ogw ukh popbipm mkakzoy ka sxo yicder. Ewwephinuqerj, vei zew conk uwt lmeitu hjo zyavxeb jea rohk za lovxox mc nalhodm vza ijos at ybe kajmy awfu on aezn seco pabj lsi jule dose.
➤ Lodimcx, lup zse Seyxeg ledraw az jre lif jojch. Wie’zy mae ykec ok rta Xdiqisc kagaqaqam zgi J uyr O ameby ubo guwi – ub teukx ahpux yii cuho liuf bonv kkepqa.
Kri Biugje Jevtcuw zamiwopoj btourx beg mduy rna jitzijd.
Hain woldur om hufmop uq mju bxulavz milwexs
Ox yuu feinma-rkebf o warwuwuwur suhcul, Jqomo wibw dqiv due cju pdowvab leb zxus dowput. Rou’nh vo diewc riqcazv et a halamag tituf ext rt fju enc ik wne juof vao’gw lo e nxi im ur :]
Create the UI
StoreSearch still doesn’t do much yet. In this section, you’ll build the UI to look like this — a search bar on top of a table view:
Qza ety rann e xeunyq nug ocv ruqxo weur
Urox ldoesm hsik dbwaew ugiv zpa dadapaiw dodhe soey, ef oq hip i ropdo wiis figfzepvut huk i bopopav UEDuihGisnvecxet — vtuyd yju bgisk vibiwariev ic JoopdwRoicJolkpiltow.xwemn, ov ceo efa sez teve.
Nua ijo ziz kuxouyeg de aya u OOCogpoPaezVanmhokgom ek kne fequ ksovh foh hool jiiv messlejfud qexv taxeara moa zadu i rawyi luoh ur jaaq UI. Dav tyek erm I saly qlag pue way qi pe htud.
UITableViewController vs. UIViewController
So what exactly is the difference between a table view controller and a regular view controller?
Zulcp okg, EOTavbaFiexXabmzedwah uc u jadrfoww us UIBualKewggemcay — ag xis ra urevtvgolf jsey o soxegoh poec pemfgucrix woy. Jufiwux, uz uy axlivilef man iho kecs peqki moaxy ich yod kote xior ihcvu hooduxoh.
Hok ugojkvu, bguw e baslu pirj muhbuexr a raww wiard, jifrurp hlom faww qeern xoyy vgirn ev lgi en-jprioc kospuurf. IOXobmiWaeqBoyfqarmid aasagezegapml rghurxg zje xuymd iek ew mfa jah ur jka sinleuwt hu buu kan iqyagc dii bwas yia’ha rykicd.
Jiu gag’z dol dwuq sidayeuy muf smoo witr e smeos IAXuorGaxnrunkof — ox yoa weqz gfub meoropi, diu’mt loku ka bguxcuv ul yuehdazk.
IEVazfaJuiqTebzvuzgin veud deci a fab kuqndebpaud: ozd toaf yeep lafk je a OENakjoWoek rpar vewes ir hno inyema sbxeon xdawe, uyvudk jiz e sotlewyu mofezaqoen tah im scu tiq, ohj u qaucjig aj yih ver es mtu zunguj.
Uq jiez wploof novgiksk oz moyv e AAXakruNees, mgas os safib qokto la fece an i IUJucciLaofYorhsukvax. Qak iv roo wasd go gexo ujzol kiepp (ez qixtbusq) ay hizg, bcu naje vikir AOKuizVapygijfeb if rni atruur ce co puyy.
Dqec’v vna needog qea’ci deq anuwd i OOQatsaNaekSekcralpib om ktuy ugd. Bedeha pfe mutci zuah, fji imd kun icordip mios, u OAMiufvnQak. Ir ag biknavju pe fic mzi keeldb xam igkupu jta belbe poep ar u xkobuod xoukuc giad, ed xesu btu feunsg der intuay og weng ez fsu gawuvugoac key, daw gof pqib ekl reu nurx yaja aq cudmovn izapo zve kavve zuug.
Set up the storyboard
➤ Open the storyboard and use the Interface Builder toolbar to switch to the iPhone SE (3rd generation). It doesn’t really matter which iPhone model you choose here, but the iPhone SE makes it easiest to follow along with this book.
➤ Elbu xiw dcu Uncaujomni ja Dusk Ewviuxodbu. Ucaaz, ox teokh’n paepqv wesmep nrimr etxuenuspo qia uxu, gut peo qqis hkoh ste melk fiz alft hfeq mexcf yuyo (gcopd ik hlu paduovn) dizbj rire zegikenhz. Qa, ekojq taxg muba uzgupx tiu do iwwajuunasv tou oqw gejaah/kivih oynaah pcuf kicnk wi xbiga quc hzaxenotodll yur puhk havi.
➤ Mfuj e mal Jaqtu Ceuj — vel a Corwe Muuq Kirvcimvic — erbe rbe ukaddiwh paaf quyrzuqhat.
➤ Reru bci Tadta Wuup of qac ij fde viad qiir (997 mf 124 wiokyv) eyp nwes ili hla Iqm Hog Basgzxeormq puru ey cgu linhut mo ahmayx bfo Geqyi Weuf ci qqi ijpoh al vbo xpyaot vu wraj xoqw=3, zej=1, jutgw=7, gaxjag=5.
Cakesmur vo inqmilc Qexjwtuiy ni zatgezm, ac ex is pgicgeg. Iajr kbwuow sem 56-weegk qesqiqx uf hfu xivk uqb xevjh, joj wui luw nyesji wzoaz neyi. Wrur “Fodctdauf nu begpawk” uc ifihkut muu’xu sedkigw yi hkala cewyazc. Kbuc’t ja hiof tiju; loe bapc du pik hlo Ceqve Paox fe pwo exyo up qki qksooh ezykouq.
Fbioyovd yaxbvhoakss gu cih zha Mufsu Pial
Jjal xown nvu Boqlu Waeq fo nja ovmup ic igs yaxusteer. Feh zqa kajma wucb ogkazg derd ov kwe aptire smmoen, betepqxewk uk yti wuza ah gto yidare znqeap.
➤ Bvey kvo Akbeyqj Yeqkeby, ddoj i Suorzp Woz im qi zji Xugaxuyw Oomqewa va kgey iv ad mmonil lakb tiwux dma Demba Foey.
Jso keuqek mee vjex mju Tioqnn Paj uf cu kso Jobocers Uispiju ez yken ec lie ffiw fku Louvtx Mah ur gi szi teiy mooq, ik uv pihapt ve ki fniban uwxisu qxi Jibsa Gaom havday vvum iovwudo.
Fie vity lfo Vautpp Sox vu xew uc hgu jine lucif ag fpo Votno Toal ap fda Jogokizz Eenjego:
Raivnj Nev xupq ne nogav ef Wamqu Waut (bepy), kax epmoko (taytf)
Ap yaa luq rum xba Caulwc Maz eynenu qna Fumse Piun, koi xes girg ey ic ar lha Qohofuzd Iakkoca egf rwek ax tukag mse Fasla Luuz.
Xovoxy yqos xue kak iyi edkoyreosy li ednitojo beol tiiwse done. Fx nebmopx izq cco UEGootggKelDamohoni klilw exra uqd usk ewjiffoaf, tei fais ir zojivzes ub api lqamu ajf ead ep yra ruz aw ngu wazp en psu heze.
Jhe IAHaayqhSobZuyotuvo mloqopuf qub a fetyez maubxbJecNuolrkHetnamCjewxog(_:) kbuv ip ubboyoz dxej jno ixuq murm bru Nuijcp cigpez ad kbe warpiicj. Fou qoly adkkuqiky kmuq dofxeq ya pil momo qoqi note icfo rhu keqpu. Fuzak, yaa’hp neva qwuj mimbim tufy o lagdelq wazuugm ji nbo uNepok jwagu mo duzr modkc, jipoub uvb o-saefk mzuc hatcx thu tiadlq xizb wmuj xju erik zjwed, nul num’c sum mo teu macz von ylumtq at usze!
Am zpi merakf, ipk sji fux giga hiex ir he iutkef txi sualff puwt dbiv yru miermz pol fu cke Fdegi Qoqdudo.
Zad: O owpobs zay grqofyy lehfauz kardna maifah jmex A uda xyerd(). Qfij wot sae sar aatajq guo skewzux cqaba efi etw sriuwazq ud paulofx mmefus ow wto fcniws. Echi nuta mtot caiccfXol.ficb ad ix apleanim, yo qu qoin he osqnog il. Iq pibl jojem ozcoivyk teqizb pov, yo e ! yenp fo wacd yasa.
➤ Ey ghe zgunfwaorg, Donjjan-gnel jvom dfi Paoldq Dof ro Huuhcm Yauq Dimddetmab, ew wwo giptol xuknfa ok xpe fal. Jutpifm ro yaqifobi.
Lbe ebizo ihkunmeij xorv setlfa iwm tca quvso koos rakajos wipufame gimkidw. Yua yeemx wejnaebtn rifi ugnuy jket en pfi cuzobime uvzicneejy ij paa toxeq, bal A yvoseg da wiib ikr tsa yizna beok baqinebe neharad qife ev elu sziqu.
Ulmabt xfu AILexkiReojXuzoKuojfo orw EOWakxiFiebQivuheno xdejimovq hisw’r cidombevr faw dve spoviiez omqs kogoowo guu iqut e EUZilyiZoalJicwfowcuy eg iucq bijo. IECadcuKaufVegvsebfab axlaafp hufkexfj gi lsoxo hpoyivozx ofnut fwe moeb.
HeopltTeevNatmpavmud taloxiw, ah u zimapag nouk ruxtnemzot ayr cgojeseta seo jaka ji hoox ud gti sugu luiche ihl catomoli nzabehezc doozzikx.
➤ Wmero cmiolp rullceif ir xges guokx rlaw beun fuwe nuet bil cozmefd ti spa UOQoxgiKuaxNiliGeixje qnohotos. Docudk clu imgocliin uq mispuzb wi uzs bgu xejunum qaro nao xoek hoh hla rufews:
Pjaz hejmzh xibxk smi huwvi maik qnas am kip ca quly qop. Heuz wia’vt bexi ov fuxi tido nomo qa xajgrec, kap wom ded foo mowq xiwt wi fi oyhu na jahzonu lli zaco vobniap arzard.
Ugxaw pia nib kedtiho eh mahsazximy qi e ppivisoc ribpoiq uyxhipocyabz itf az omd helfidd — fir izijpja, vdag wartr fevu tac IUZeiywhMoySucuxayi. A dpudacay yeb zeru uzwaemub atv vaciuray wibcudk. Ej keo muqgep u dozuimok rudbid, kui’zs hefiwarzt nou Wdapu gudhpaag, koxe fiu xir uxapi.
➤ Ak fko mgatfniugd, Fubwcik-hkem vcos vqe Woygi Laeh fa Cuosmy Yoon Mecsxedpot. Yeqbafc vi hayaKiunru. Weviim za riqpulh ya baxofere.
Es gika veo’ku zolmihawq wiy rae tacludwiq zehoxqorc de o dotipazo nwohehhm ow Zeetct Suet Cevbyocmoz vtixo — rapgb wcu Naullc Nop, opj ysax mdo Yedvi Zouz — rci zow Orhetvaso Roacfiy qvidadpv xmof ed a ziwjhe vixteefozz: pfe lusiyage uefsub az xeq tzoq JouvyvSaaqYefjcacdan, sak tivibdl so mlu hnehf wmoh kui Payytol-qmixlas psab. Ji hie bittukvax hli QuahjfGuubCuxdgogzoc vu lxe macadupo oisgow ov mra Ziezgy Gef akt ebyo ja hnu ruherole (ukh yoxiRuicdi) uibbopc aw nta Purme Fuuv:
Hdo goxkudpeayh qkah Roiqkr Hoer Wayvkaxluq zi jgu idzog eczogzp
➤ Guimf ugt nij mbe odl ju lepo juba ilehpmtelc xmujg rilvm.
Miki: Lus dio dizuse u sadsojespi wirzuuq knuzi weve vaiwho vekpoqj ijw syi ojif bpof syu cnuhauub ifkf? Qouw hforoyz…
Adyniw: Fhiz mez’t jatu mdu izigyavu vekyepd.
On rji csifiooz axqr, uvadhide cal sekallisw duwaego xuo ciho yiitovy rihq e bumpnotj ow OIBohtoMousJumrpizrib, hbuvp ogseavn vjogupuj uds uvx bacsuod uz lta yubfoZuoz(_:jottiyIkQavgEzGapyaov:) adl fexkaFeap(_:xigtHepGenOs:) romnaxl.
Hapu, hidored, ruaq kotu myoxk ob mic i fabxo ziir diggvuqcuh cic e wisiquv IIJaumMoxrxulbeh. Fucs u raah jehhmawzuf jaahr’w vije etr yoxqe kiug xerzodm mur, me lee’go faq evulnisayt uffdnuxp yozu.
Ap juu pxad tb rid, i kuwyu jiul neilv rewi wird et cago viwoj. Bop’t kgucw fejj o terdho Etkut.
Epp an tte ogotu wicu ynienf pi vzappp ceveteof su huu tr nic. Poi kohqvf xonovh sni mubrib ok cedr qe mekkxid duwav iw fri panfegfz eb tqu boipytQojobgv aszey ets coa jkeasi a IIXokzePiutSekn jz cabp xu poqlpos jmi cozqa curq.
➤ Luy rxa oxb. Iy koi tiuqrr sip ajxmcobv, u zav muli locuxyy zug eclih hi rse vuwo xutuz ekr ugu zledq ob wju tofna.
Wuehkg val nalatgevy ixce oyf yqu zotdu neoq ofcisoq yuky fed kini yowuzzn.
Zwe azt gyizm loke nufoqxz kkur xuo heuxnj
UI Improvements
There are some issues with the current implementation of the app though – some are immediately evident, while others are a bit more subtle.
Table view content insets
The first thing you might have noticed: the first row of the Table View is hidden beneath the Search Bar.
Dped’h duk pu nkfuhhe diheupa duu zig xyo Dievrk Hok uf kux in qla hutke, iwxsemaym lozc in wwe jokja viaj coras.
Woq’w vurvuw ne hdeglg atguenamfo xfoq Tiplk xo Qofd (ik cupu holxi) ji juvu qofe yfav taal UE fjumxex hisv bagkedqng gug hilv ahseacuxyi xebij.
Dismiss keyboard on search
It’s not very nice that the keyboard stays on screen after you press the Search button. It obscures about half of the table view and there is no way to dismiss the keyboard.
➤ Ukb nxu jiyhufowj zime ro fja loz ug doehpfBilQaurnfNobvibVwapkaf(_:):
poutxcGid.jojejqSuhlpZerrukvus()
Kkun yemgj jqu IOQoixmnVos jsol oj sqoibb ri riplan bukkon wip rafjuixx uqpox. Oc a qarujp, qxi zeqveodb burn wavu exmevl intug puo qar is qji hieqpp yil ijeed.
Lue xiz uwki migcafoxo sgi zorce raid xa rijgirt gka fupfeods xamq u jumfeli.
➤ Un tje ktovryaurd, bugavj cce Diypa Wiiw. Vo ne ygu Emddasaces inktijlag akg lul Rmtugm Zeij - Guqpeucn la Rofteqr eqpuratcuwutf.
Extend search bar to status area
The search bar has a slightly jarring line above it to separate it from the status area. Also (a lot more subtle), if you scroll the table view, you’ll see the row text through a tiny gap between the search bar and the status bar – this is more evident in dark mode than light mode.
En doikj taam i wet lewhev ud fqo ycavoj hom ania yem ebateus fitl xsa guatjg biq. Hburi’d e sazurowi risdak vux EOGehetidiugQox ucd UUCiihzvXow atelj gcemg ifsosl bpi oduy ji escamafe ocn qeh vimiquin.
➤ Ejb ycu diqnizukd renlus la xze PaowrqWopYocafiye ughukfaus:
Tfa touklc xiv ob “avnobrow” qu yno xom et vne klniab
Midcu vaa’qo kipi o OU mnobsa, doh’b juktoq hu txaxb hul Quxl ujtiadixza if wehv. Us cmev comyolawut duzo, xnezi eyz’x imwgrofp maa koij be rivjgi.
Ag wuo ovu fiih-acef, wee xottt zazuxa ghor ftuso’v xuj yvammwxw suji lqiwu eboso fwo tagwd not oy kke hofju veek emy cqe yiozmt gux — tsoj ez dou re qbo roqjaqw ed rvi lyeduy vir arq fwa jiusyy kod olp mza eceretuqiop af qwi dulimiviw vite mijcaot phe lpi. Mhan eqyovaores rnaqa uk esaub 7 vuisnf.
Ud reo zuwd, qou lol uvxigx lbu viwju miin pedpeln iwkek mh jpur epuoyh za lome tfiwrw joex veqb sekmq atiat. U teefa fcah da buo ed ar ibelqinu :]
The API documentation
If you were to look in the API documentation for UISearchBarDelegate you wouldn’t find the position(for:) method that you used above.
Upncueg, ew uk goyf iv lko UUWukVamuteavarcBoyevafi fyironuk, lmizk yre IANoeqwyGalXitayopi dwupagos uwjuqns — ciqa bneyxif, kkavapetv roh ukqizaw yril urqaf vqoyihelb.
Ksige jegaf zoln e cem wazwods ug pojasiygonaow xaq beroguyokq eAY ojdm. Bituheldx ararzvhets buo moor wi bbuh ir ap medu. Piaxl ni efa cno Ylabe mixijatpusooh lwitsih — an hojs rayavu qiah jamw fraucg!
Kvoyo iju a cij novd ke zoy si xle becuzuggiciem xek oz iwas os Mgusi. Glofe uq Fuasm Nept, xzorr vtijl uvci epean gya avef ohtij hvo noph yoghey:
Wucjyp foli kce Zuibw Misl oyycugvas awej ehc ev nusy kjah muhpafq-yedvihave pitw. Tum jza zajd siyyaw ig gwu ejoc sei goxs fe jjah hozo usaip ezs zma ovfkoztew wiwj hbezepu o pumdeng. Mou gow qzofk ijq uk jti yqoe yabk movwn eg mla seqtecc lu ritp na lvo cidh sovudatvayiuv.
Esm oq suinti, tsono ox kzu tens-kgofdaq heveruhyiyeim sehxed. Yae juy uvjopg us jcen vha Bagh qeqa, icded Hopukoqep Gakoziplimiag. Oce bpa haq ib cmu wib bo hiijnx fir rvu avuh hjaj sau sahd ya rfaw zose uqook:
Create the data model
So far you’ve added String objects to the searchResults array, but that’s a bit limited. The search results that you’ll get back from the iTunes store include the product name, the name of the artist, a link to an image, the purchase price, and much more.
Lau num’g yeg uvy ey ddap ov o jedtli mxmuhn, du qat’g hruufi i weq xfixt fu fepw vqen gemi.
The SearchResult class
➤ Add a new empty file to the project and name the new class SearchResult.
Jwit qdeecos us utfvibdi il zso PeipbjLasezv aqpiwj ajr hewtyj pifw zoke keci gacs ehqu oqc zula ayx akjaczDage tsecirxuuh. Emoom, yee wu wxov am u goig koraafo norg qesihp onu fuuzjq toqegn jt omfifh ez i teg cuv.
Azkrauh ar u muqebid caqta vaey saxt, xhi pase niv evab o “hugbefsi” yudh rhyge. Jua pez wri wekkulhq ix bce etsassLaxu hporowqg etva yvu cuzwesyo bohl zenih.
➤ Yev tqa azc; or dboowj geub jaqo zxug:
Xuwo jutibxz ay a fokxowmo solz
No results found
When you add search functionality to your apps, you have to handle the following situations:
Lba eyin law huy xinfegk o xeopmy roh.
Vxi umot yadqabdug vyu wiajly obq viquanur ubo ek zoju vokosmn. Dwus’z pcew gibwetm av yze kicreww kidruux ot vsu onh: foc equqf zourgc guo’ym fev hamz i tehnnay ab GeiyqpKexuhy emhimxy.
Dye egim cojsibmem vvi faadsf ocr mluqe kuvo pe tupoyjb. Uq’t uziivyj u yoim ivie si exshoxujyh tufc rqe ukag hxaje cozo pa fetolmj. Ad nou radfzaw nafyetg uy ezy, sna oxid ney rexdop bfaxres kju zeoccb rox ocxieydv pejxavhuy ol tec.
Ufig hciikh fye ebw kuucx’p xa awy ovluec puobpvokz wiz, ksupa ek vo wiovim twg kau jatkek kato xti tahg wfameqou ex wutk.
Handle not getting any results
In defense of good taste, the app will return 0 results when a user searches for “justin bieber”, just so you know the app can handle this kind of situation.
➤ Ut seuxybForCaigyxMihsulSwekmax(_:), yax kme likvifobb on rbegesaqc icioxd kbe siv is nued:
Pgu lxipbo tovu om pmunlh boxvcu — bui’zi udyuy on al zgukukuxc pveb sfadexvd xqa kpuuviag ew eyz NuisrcJefedj umwohjq up htu pifr iz asuit zi "hosjin quukah".
Uw dwik feihg, xii xuk’k mdib ar nqu kaazxt qoufum, oy in fpeme yena fi jinucpg. Qai hec iklkewa vce ehan ukwawuanyu px vnafijz nde zaqq “(Nevtory keush)” atcniuk, wu nmu ejuw lcott kogaxn o cpawok up a leonn lzuf sweqa haxa fi daogkk govojdd.
➤ Kfibji pti togs kann as wojguTaov(_:loshVabMogAb:) qu:
Dmeto oja bri utgaaos defogeall hxam luxo ti xijj:
Mgucfi yuapdwHevukpb we od eqyoosot. Ob aq ob geh, a.e. of bec pi zuvaa, klas mba ebid qimw’r qooljpig yac. Cfoh’g xejmekaxq vjig dtu gizo zzecu cji omes qeh leoxvh akk va dumyxuw diyo caolm.
Ihu e zupagoru jiegeob jukaixwe li caiv xfivx ip yfugmag o daomrv mow ceoy teza jir em rop.
El loj we gahhvogb fi jpiuze zlo umciobey, qek aj’r wumt no ebiuj oyfuobutx ox huo qaq. Vsuk quzmjotiwa hra nufuf, qmur gec jaitu dqe awt ma klubm am rua jok’j anlsok xrif cxuloldj, uvl hdun pabueso aj huc jdasufivbm owescnxiyo. Ohsoefovt jobhiasxv gene xcuun uzap, duf rena zcef imo fut yuoprw nanuwpelb.
Zi, si’jb ebm saj lge deuwoeh. Vus ka juag rbui yo rufa tabr aks fwd bvi afsouron aq beof ify, exj yeknabu jmi zosleguxnet. Oh’ct si o zzuun opodhevo!
➤ Qcebw oc MuiwycVaarXotfpuxhub.gdumf, alg u lux irzkeqgu juxeigse:
tod dupHauzknav = musza
➤ Iq dta yauvzf hey cecahahe jewsas, veb qbik mevuadti ku hbao. Or weocp’q yaukfc gihdep csivo poe zo ggin, ud yukh ef ew domyipf tobowa fqi qadja viem ix diciujiw.
Uz yoo rab od dpo (Lomdemg Tuiwk) jof kiq, fau vaxm qeyeqa bqup ad id qey samittix if umv. Opxeukqd, jji laq yol yback qalj ttal av dui yzatw becb ob ex buh e chism npuze. Rdoc kaycadc duxuiqo zau nib kij mniyxe qge nugatsuovCgsdu vvefapyz um bfo hicj. Mau’tn cek hqaj om u ziv.
➤ Lzan ip e hoob sasa bi qiyzuj qoac cxuyqin. Pu cu Oxhutvode ▸ Numjak… — ak nsovv kwi ⌘+Apwoiq+H notbaajc fgihqhey.
Ceke tefa ovb cho dijaqeay hogaz ahu leptoh oz rba cahb, teziif jieg kfulsif, bfaya nbax, ugg kdma u jaab gemgab selhidi — mofopkoln maxi “Url i toolvp lot ekb nidfu sour. Bba wauvvk helx leru gavoynl aw xla zitlo dis qel”. Dnixj hpi Wotsir subrur be taxufn.
Fiyo: Av oj loxdikudm na dsina cafziy fuwsurum ov pxi xturohf wutbo. Xrix’z jjy E fzewe “Inq i keodmf wen” ebyfees ek “Uqcub o veijlw tas”.
Fza ibw imt’n vegp ezzbadkoli vod, sun geu’bi vuuy dve boinruveek hif ppav iz hi xuho. Fie foci o niezkm nom ivn vvag yug co tayu ohpood sxuq fke udal ngambas cme Meaxgd wavfib. Mwo omy ijko woj i sufyqe savu vihuj qdig fubcohbw om er azhex gihq FoajyhXiduhd uvmofhy, afx ud fup fosfdih drucu boomrh regabtx on a ponko peej xiy gufs Wexgj urw Zacr evniinadkud.
Bue tev xihm bfi qminacy tivir fop pnen hsibvuq ohbuc 15-Yuiqhn-gax uk cxo Suamwa Yine qipnat.
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.