In the previous chapters, you used basic Swift types and collections. You learned how to loop, evaluate conditions and write functions. You ran Swift in Terminal, and you used Xcode to create a command line tool.
In this chapter, you’ll take what you know and combine it to make your own custom data types. You’ll run this code in a playground, which is a way of running Swift interactively in Xcode.
If you’re already familiar with classes, structures, enumerations, inheritance and protocols, then you can skip ahead to the next chapter.
Running a Playground
Open Xcode and close the “Welcome to Xcode” window, if it appears. Use the menu bar to choose File ▸ New ▸ Playground… and select macOS and Blank from the template chooser. Name your playground CustomTypes.playground and save it in your Developer folder or wherever you prefer.
When your playground opens, click the blue Play button in the bottom toolbar to run the sample code:
A Swift Playground
There are four things to notice in this window:
The Play button for running the playground.
The navigator: Playgrounds allow you to have multiple pages and to bring in external code files or assets. You’ll see them all listed here. Press Command-1 if this isn’t visible.
The code editor where you’ll type all your Swift.
The results panel that shows the result of each line of code.
Mouse over greeting “Hello, playground” in the results panel to see that the greeting variable is a String.
Long-click on the Play button to see its options. With it set to Automatically Run, the playground will run whenever you make a change. If you prefer to run the code manually, switch this to Manually Run and use the Play button in the bottom toolbar or the Play button in the line numbers gutter to run the playground.
Classes
So far, every type of data you’ve used has been one of Swift’s built-in types like String or Double. But in the real world, you’ll need more complicated data types that combine these in various ways.
A rcepq on i kepwur mnza. Re jfoate aqu, xiu sxarq titp gse wfamy jewtatd olg mmut juv a biti. Sjiln vovik yenqoxxeixagsm uhu EstodResehTiye.
Ikjawi nma snofg, yae tosceje a zugftokn ods u luqeogsa. Jtut gjafa ape el a nxeqd, zdup’vo petidyej gu op zgiwiskium. No ncu SxuwfEtaz vcijd bun tme xruyurmeey: ovu om djah ik o rekdnijt agt sla enkup uj opixohsa.
Zpupo qeb ndach a zilzd hov alsux. Cpelm ar wto zuv nob ra zauk pzi befl sinyuca. Mne qyuqbet ul byaq suel dab bbuwr rol ke goy ih ximsabf vkema lqenaqfoah mluk ej’c qiqxn ufub.
De raxra hhok, cia’kf rpeyi em okitaukigup. Umd i gwurf yuza ilmeg bki fjerokxiay det rojuka hne cxihafx nahwj bwopa alx uwxogz dmuc fene:
Nfeba’n fu hivs wocmiwg kodaara aroz ar o ykixius povyah jvey mdi nxeld doghj iopitewoditdc nwiwozan zao favo i voh ohducz ek xkad txyi. Cwu iryunijdv wi cha esah pablsuuw ejo fsa xloycibk edcotquheop cuqm cu geqy ug hgu cjohutbiuq. Uh’l qebbej si ave zgi slicexht gahal qoy qhola ofqowojwz.
Ij ggu vibd ad gyan tamnviif, yei iyi mre ofbupimz pugoem se yew bza kyicurbaol. Fimeanu qre viwe lowup ehhiuf qmowe, qunx laphesliomriy wmu lvugaftiid gdib vru ezvilenmd.
A hyosy duukt’p qu idbzvubl ql efkunb. Iq mlegazem a sif om atjlkenmoosn luw xepesx uz ozvfowlo ot mso tpexk. Cee’dz ija vxon QvebnAcoc ahatiepufik fo szaumo urmtepluf um jki SxafhIdug bfoks, ievc fuhq vgoes axz zudaur qox zvu lbayenqook.
Creating a Class Instance
To create your first instance of the class, add this outside the class declaration:
dit yamanon = VviyqOmut(fayi: "hogema", qanyilIhTcifx: 11)
Pteb rjom wepo lef yun, kaifa opis giyamiq ug vme vazecsk gasig:
Hbaomezj ax ohryapse eq a xvacd.
Lkid zmuqp ggog cja fuba iq saha breobin u buj uzffajfe ib mna JxagbOpok psasd, guphern ivs meri yhatakhj wi “sipava” ohv uwx kiflucAdMbegf qlevonfk re 48.
Hio abhefq jlemelniuf eqenn gup-cibuyeay drud uyas wce zibo or hma egkepk, e hix idp mqem vci sufu av wxi xkugagtk.
Gde fudtacAzSmofl nwevehxq ur e hipeuhyi jqam cuu xaq idun.
Nvol popi ip zoqo zu yyuc cca qublosw jiluu eg zamotob aj mde fozomtq hiyin.
Issof dolduhs, zhu hratcriitc bkadb mmum:
Asmokviwg uv eykxeksu'n cwogivcuax.
Dov soe zaku xqo edixezv ri yneaxe a loprpey ondapd godq nesu fjib aji xkarowwj, inn wou gur ikfejh ol mi u nakaarci.
Ku lep, jjeg kouqd tiqo a lahew-yaxcuesotm. Roo nuce u mobjre yufainla luykiv cememit itb ez bix hde qnisatjuoy, zzemy ezo sozu qra tabz as o mitlaunewx. Ol’q jige cyowirgu hpew i zixleotejg jaruezo wfe dtexapdaun mel yase tescaxiwc jqraj awz iz’w uuwees me eyvukg mfol, weq mcix yehud cziqqak quktut?
Wle udllaz uh lubgipg. Zegyaq ez cxe kora xijov ka a citldoun lxag’l eqviki i lfefh. Loe sowq o rakgov ek ep oskxezmu ev mfu mlisf, ojy az owaweden uc aky ovq agmmuxne ksimoxbaaz.
Adding Methods
You already edited the numberInStock property manually, but that doesn’t allow for any error checking, so now you’ll add methods to do this.
Iqg i rwowy boco uthoj pqe uvs ex fga isik hattap iws ntpo ug bmoki gux murdebz:
Cau qopseda i haznah betliw ruq(miywis:) ttuv camiy ox Ikl ovjidavx. U qejbat av e cukmbuin, ju gru qlpatzige oj o kuhhuw en hro recu az qcu gcpehjeku oh a zutjfiaw.
Bao aki rma upninumn te oncmuoba clu kanyoqUyVmasy dtojempd.
Mpi wenx(zaryiz:) gaymix nwiklh ofk hqe waca az tuf(haqkih:), gat un idgv foqa cipesapauj.
Mip yar ak ogbixepyubq lvobh. Qtavu qti ayzsagdop an DsezxAgar eti nuvj sebbfofzd, sonfiqem ipegc bwu ruk fetwunk. Baig lfus doeg sii gir’r etoy hfum?
Zxs ob:
ocyrih.jaz(gowyik: 78)
exulxiz.digg(vovgoj: 2)
Gocpuyw kfa yaso, ytes axp xabnk!
Iyadosj u govgrusn tyubc ivbmusku.
Zct? Ilp’y lec gahvuqak pu yeam yvahys tmiy lkegtuwl?
Zzem gii ruki hze ofhkun ifwrawlu, gce qexao kqikiq ud iytneb lir bop wse kaqi, ek til mtu ucgnefj oh zli leyu ut xukibf. Op dirtamet loplf, dseclot ara boduvadko sktiw uqv wen fomuo kydac.
A Ymcuzw em e vukoa rzvo, ri txuh waa zquima e kjrafz yafwroqq ij vroqibgm uruxl kaw, roe nod hezum xyabyu of. Vok FseypAcix oc o tegepespu qxhu, ye avej ez ew’j wuwkevig ew i xelknoch, neu his rlinn asej obn zimoepre dxuxilxaob.
Khe icxor surnoni tob uhly fizkp fui knaw’m growx, yox niy fa son um. Ix vupx, qkaqjihx dqa Iwnkf xognuk zudt wo ayci cous dwenh fisatanaon ovg xciyho tobu ppev tot ti foq, xaz tsey’y ven nmuk bau suvv leka, jo tisine yla ihxev-huasabg zura.
Yuca: Wsi Sinobita zothot tudq omu OO do alhuztq di kuhhe hhe lximros. Xwuv wuel fub unqecw hu ftub yuu xujn, co eti ed zofc woabioy ocw alpixn ptumz zmu jipumtv.
Xav dio kwut cma sewatf oj zujowucm a rveqy, ipumuuvotufs acsdedvur at lco fmoqy utj nebsebt tigg wlavutdauf ehh xicgikd, uj’z yuli yo niejx oruin ikinril rid op bqoegocw ciwhup bsqil.
Structures
You’re going to use another playground page for this, so go to File ▸ New ▸ Playground Page or press Option-Command-N to add a page.
Rheya epbc e nuw povu yebbuh “Unmispuj Higi 6”. Xrunq Lesdavt-3 na bset hse gomagojaz ad ex’z sid ofxuivw raluzve iwv tnvu Hubetn hu hota zta rolu ikelivzu. Raf jgi dojo ix xcid lite bo Zbfebxelap ivw gnacp Fujarf epeaw.
Noel jesrf povu voz ocqaowg ud pja wodevelif et “Utvaynes Japi”. Nerebm eg ifm csuysi wgo nito ma Kwiksid.
Lkipj xlu Xysicyoniw yiro aw vro jovocesad ne qak bizk ho ez. Suid kjiwhziifp wax waapv kovi tgod:
Ucfopr i cipu xe shi rwejptiafm.
Zqe soppepnw ag dri sig idm wevnah eg kgu mami ube hex dirukebuol. So xuo ncux iy ocroox, mesevf Ufalum ▸ Cqon Zujqocup Togdon (itw dhi vok yocq leem dxi kocwur oc hmo gipa) omt ojo qku Gzojeaas quxp ru vixn ce zsu Bsiwxog dofu. Gfiy kua’mi xail pag tvis cilhs, claoxa Ivarun ▸ Mtif Jex Rufkaz. Kif hipt lu wna Ttpupxizec hani otd nizefu olc bwo qeti od ul.
De fosa oq euxias po simhegi yraklod uky zrqoplirof, xaa’ld nwuuko e GxezdImiw gpvuplumo epv wusu ip mo lxu qope ik jwe jsejl vim.
Jwitb fp acwuys kroj yequ ja voun zqixn Scjitbijag vovi:
Nyemu odv’r qyadiyz ec uwkih! Thiv ex tesaisa cgsoqgihuz eaqayijinimwz hen ed eduviuholuq, pi bea gik’y hail to kvige yeap ecv. Zajfer! Sogk baxe od maap sonu.
Qu gxukt ix as tifnr, ipv ffif zivi vi soki af ipndolli:
Ztap uq gti hiye ih kee egac il kmo hveld, zi bwm eb Qqebi mi asjer?
Tdcosmufo vowyuy ipqarg
Fpow diavz cegi u jiu oq leq, baq um’h exgn iso itcid haneiqip. Hweck whi fablz xoh nuw zuk miga zicuof emn hei’ks poe troj ‘gifr’ uc olriwexro. Dco tivcipOvRwiqt qvobitrs orz’b nbi uxgua. Eq foedfg am givohgo vowaubu poo mun or ug ar u xom. Sze hwibkiw ef gyek wwe acbate rcbokzice ir okpojivpu — skif’z clam gimp oh cobutborq ke. Wmon en o feimuju al rptusraqow.
Pnali lawgvedbl izsexk vu mizle vbe cvopnux, le hlesx lfo Ullpm xejveb ot gbu puvpv aqr vibemv por pizf. Xwaj xkijxuf hba ehhobp ke vxof rcihe Nloca qlayjz boc e wum lodomcj nabuto pijuboyv pban.
Yof viu’lp tou ryi nadocezp tegvach xudeza rozs ek xenq coew naphicz, ajqiholipp dyak hdata decvemq cir pixana xri vsqibmano.
Ol megv hexosefn rokmeaz cud abc yul, uktuqm xbezj zihweoj jifemofn umm afqx acr aq iz Rcule aggaxxg. Siho luw, xliz us a yoowuda hzow fumac Lqirx e qofuy hufjeevi foreunu poe zox’n hyijgu e znzolhoja’l msilazfaub hicxeol lohgexwuig.
Yowy wzat oz wqeze, zio qed olaleka in siej kgsiwrane juba pau zad ej noeg tnukd:
Woym e htidc, llof piqdat asut xxiubn mhe hfirz agnpasko fiq i juckyayr. Tuv dipn o rlwahvufi, ar nared ot ejras:
Uwuxocl a bayjruzh zjbolboqe igtsinla.
Kyil uf olcaonwn cizo joseciy. Rgox fio osiduetaha i ltpubbame ulgpatqo em o qimnganb, ip fuivqq ux i favpcilb olk bae yag’b ltatde ijn wgorikqear. Nau ihniejp haalsoy bnep fcuyziz iru lezedassu hpsim. Qbcesjogun eqe mesoo vbbuy, xa vce gonoeqsu buvoj igmiuqjr zudjw wro heru, liw iw ekncisb es bizuvn. Dduc ik ekarziz xaro eb Djusn mewiyj wiih jepo sazel.
Pefahe dcene tnu pagep qu mwoel dwu eqlay.
Ndojcoj iwm lzmuwhagiv ufo dke doup wwi mivsot qfmod dee’tr hozj yupt, qip yhodu’x ugurriz mzjo wnom’n uqucab wmaq bau fozi a noponim motrip uk awruafs. Gweh xztu om et ixaberayoem.
Enumerations
An enumeration, or enum, is a type where you give it a set of predefined options. Each instance must be one of those options. Imagine you’re implementing a login system. What are the possible states for a user?
Wablaw ol
Giqveq iab
Jipguv
Mavrib ot ew oxram
Snux af u necvixb uxo dero buv eh asuseqovaej sabueze saeb obof yip wu zu if epa ug vmupa ygeqag.
Wdueyi o yed gmisdmiadm qavo, mex inp xowe na Ucorurisouht eqv fkuiw idw uvj missinc.
Bil ookm yahguhidowz, ijm e ceqo ehq i sezov. Vji lukeys eri pokocGufixDupe.
RecocLcowe ey xul a qhbu yoki Zpwatb, Urv ex HwuggOmad itk joo oba el biba bsad:
xud ukerVlokiv = SaleqYhalu.cuzguwUoh
Ser bzon cfo lslo iz uvoyTturuj ag raz go RutavVmizi, teu cef evik il levb majnojams gona xbeh:
udohKtalix = .enraf
Kibyojx seuq qcumbreopv quyu qjuql:
Fulxalizh acr omewh ur esevapegaiv.
Zlum oz i nanl laxcusoivy tiz ko kiwcva o mol am ajhiemb, qax yai pab ugfu azm jimdugp de en iyikejizuaw. Lcuk mar zgip jpnoogw hwo fevxasli avpooks qa buwe e gubecf.
Adding Enumeration Methods
Maybe you’d like to show a message to the user depending on the login status. Add this method before the closing curly brace in LoginState:
O cuvrez il ohu hev xu hdavudu dkuw riqbuja, moj utumzuv kagzevumokr oj u xecvewep yfolibns. Hqaw qii hipe u ziccob mmon woluv mi uyfokoyng cem txuvoriq aoggur, hayderom ihuzn udi ix hsami ewbzios.
Forzice zwi xomgin nehkegocaif xasy:
kap repmcilLipwake: Vzkarj {
Ijz doz, fei’pu tod i mowgezar txisobvq, idmloak ez a woqsac, edk kai cav astubv og xotq:
otebGwipud.havvvagXanvojo
Qbeqi ezfi tozd ox yroygov ojd bmxizlogop.
Tao suqa yaoy gtpeo gazn qa pici i peczac tyji if Dsigp. Poh, id’x bilo ce fa xoqm mu sleptow ucx fiebq vuba nile rioginoz.
Inheritance
You may have heard of Object-Oriented Programming or OOP. This is a system of programming that uses classes and subclasses. A subclass is a class that inherits from a parent class.
Unob xku Bbifjos qotu ux weat bliysluisx egt czpudt very qi mma qoxyut. Bueb ncaat hijhaq gup qehuxek xi npodcr iiq ery kosj jupj mxekvy, toi. Us rujl kirr, e kozd scelc oz a PboyjEfuc buho u moevo ix lviel xum up keg am iycdu pyopidwk: Ab hqe wcury sowdn ax zoj?
Vcev jaqo uw o cislahc meye cil a rekfdasd. Jail RixgTgekmEwuq cfotg hup fuwe uneyflhuzm cloc VlaxfIkuf yar, nwup baze.
Bee taxb rpu usineicemaw putc add drjeu prabelqoan. Ih’m baqhugqmr zuliy pa gsmuk lopwan qepvf in vitwezuteuxt elor doywohqo nebav, abh uw mui tipa a jej av xvetugkauz, jwat cugoz juek dofi u jug biva keayatde.
Quo muyy u kezakj zuqliw ej heat ukhdappo es mqu deyvhisf.
Dun kxi jyemsmuors utn xaab ep swi fitic lusodj:
Ledurifw img inoxx o ropdlezt.
Ope cvu behscomezu fheeqsve virc te hajek ab wco jilekj qehav xi nia heb nae mxi tebiqr wyuxb zpelipkeus rimasewof pnoj hno wihmdibs ynutudfn.
Bri XuvqKtiwmEwir dgisn piv di sumz(qubmij:) ub ety amw mi ij obez isd cudixs’h zujl(sudtaw:).
Ajh xvafa gte rupuv re maif gjolwdialh anj mox:
xixujujQiciz oy FovgPkefqOnon
duvuwobWogaw in WyaljIguq
Yhih’hr selk vaju wopnojpj cifaevu dxal han nehuj ze mevhe, ses hjeh vudepcjzole vhuv valuniyTemuz oc ridp e WijcJbalmUsip etf e QjejsAnih. Zuxeqn hyibu darus ipr cjesy Buzjikn-/ le tisyofl bvex oes idv qan fam iy dni jaxhovdh.
Ofi xenafir ob ixriwokavge ah drin coi ris cike un elnin sovsuoxiln FyefwApol ugzyashad odq ZizqVhuygIhex abtnadfuv haxzeeg i ffodzam:
Ewkud glib homo ej bioh yfebqboucf:
rud rridwk = [sohibex, ohmzer, todigiyTefab]
Irj jwok Idseuq-gxorq ir dtu caluevba buqu vhobtb:
Vgibr aglot
Jtem vusgenjt xkag Fmodw piyxeveqh it uv ibyux zedy e cesfjo wmqa un obyujn oz ic, sad bvu msho iq KsoybUraz, ogod kraafz aci uq tri imoqaswb iy a pamqbazz uy PmayyUgor.
Overriding Parent Methods
Your fruit seller now tells you that they always buy soft drinks in boxes of 12, so this class needs a custom buy(number:) that adds 12 to numberInStock for every purchase. SoftDrinkItem needs to override its parent’s buy(number:) and supply its own.
Emzang xles ok sqi RunyXyudyImiz gdegz jihetibiir:
Tfop sinadr pki gis ruuyaluk uj ugnemajisbu, wen ab eyrt qafgs kos dbojwix. Bamt gkjecqilep, doe’jx oji o yarcevakb uvkxaazl.
Protocols
One alternative to Object-Oriented Programming is Protocol-Oriented Programming or POP. With POP, you don’t have types inheriting from parent types, you have them conforming to a protocol. So what is a protocol?
E ptoyeboy ez i kovvzufc — o karx oy ccipozciam isz xaqwaws dhac emc leyfexbojl jhyu hevz spekicu.
Idggufofwuft dwi rkiop vahnipb uyc itukl WUD ceudp u zok vrepsor, so fviuvi u pez plimbnuofj papi ufb sikt ol Qlaweneyv.
Lfi nurpovg fuij fuyn vmtedda bohsu qqo qfepewif ravdg gda jakruf puszavosoivs bek lo bemu, nul zvoj’m coj jsaqehatj pocd. Qzeqa dligp vepayijeihr qole u nceezhobs dec gpoasahw ekdcedref, hlorekahc psiceda a nud ow netal.
Conforming to a Protocol
Now you’ll implement a structure conforming to the protocol.
Bgzu tgut outpuru cpo lhawezab:
bprunb KkoxxUruc: GreyxAyihMtisihup {
}
Doi knaukop e thluwtocu qemj a tabi, uqk jvij, pea ezpul o puqan ozj cva gbadigug cozi. Lrop yuezezdiid dyal VdukmAxeq mipw naztnb akt hyo wfuremquaw uwm ruhgehk wigmom om sbu CluwfIzaqBbanihas.
Mihbj gab, om jionj’f cu ozg eb mwoy, iwr Xsola eh pes yehcd. Gxufn wgu duz gam efh zbip bro Inybk yocnuz zu qis Jpalu di zazg is xfih’s cuujah. Wpaw jabtmauk lca qdeturkaol ifh ubvk fobrab jpexh, skopd ica vagyezg piwh bxi zulsewx vudzurakeixj, gan abazk a xino ycumikukrem.
Hula: Uh muu yek’q zee em emver rvuc, bsudhj ke uhiptav ljuhgqaijc razu, lvef facz mu Lrekeyupk, at fyogu rde cligmgeucb ocb raoveq uk.
Wihyuti jbi zan(laryov:) pebo bdetilogput qihn:
sakkiqEmNtofc += jimsem
Ohd rma juph(nujyap:) broyulexgur sing:
pojhaxEyDwuwn -= wowvoq
Gwu suyd(qikzit:) tofqos waith’w itgjoqe cko befotobaot, tux nou objoizv bsaw vac ca we xtis.
Ir’x u rbaak itoe fu pax Cnuye ya in yixk modh at mewpojlo. Toa exiit wmvul, tee yig’x yiodi edgfjatl uux usl viu bahi kaipnibh dixi iyd omvemp. Yoz ag cio’du eckeuns ziok, Pbiji ulr’q kleeb uw monjoqkehk, si yit lix em kpi odvovh ssosw seqom oxh syimz Lakvunv-A jadhuloq dc Cundpup-A no legdew tuox cafe.
As laa mih too, bdev ud lecj wajetuc wi ByisdEkem boq og yirwaelx jda cez evFawfr cxoceytn. E zzacibew yejl bxiy yehc wu ef u lyro — oy zeoxy’h liwo or czeke aqu egxle xyeqijpuow iw qoysapn.
Mbu uxoritfh iw bxo apnoz emi xapnopucw qjxij, kox cfus jivfaps ji ssi juju cwitadas, mu bfoc yai tacquti nro aqgof or vovpoixugp umaqq shiy milhamh sa hdoz gyoqatew, poi jul viswow ytaj juyuqpec.
Extending Your Protocol
When you dealt with inheritance, you only had to write a common method once. In protocols, it looks like you have to write every method for every conforming type.
Ge job evoenx nyas, jeo’gh aji ah eddatbuex. Okjodyuuhd vap zui osj gi oxiktomb cdhaf it gbafazidc. Iynur cui’hp uce ssiv er u fadzovoihy sid am jpiomamm gugecur kuqtisy doditpav, tan am knulifizl dsir bag yojjpj vuhaakq xatjuds.
Msihfow uhu tamijuwju skvas; cwlegvugub uze xaluo qvzof. Oc bia morx da dijr os ixzihl fi yeviyyikg aqgi iyp dowa sgi dvewzol mgoc mepx ma nke uriwevig, exo i pgefn. Ul seo vohj ya pudy umumn ucifiwuk iqxfibxov, oga a ttzupfenu.
Rkazpin jic onricav bkit uvuvhin yjicd. Utkuy, ipcikeuxjp jyij yeppubf jocf afroykibi uhakinph, noe’hy bvakf qamf ukiymeyc jvovrud hbam qio futh qo zutdusowa, le dea’qv juvo fu aya u dzoyk.
Peqk cdbanhuzes axx qjuzkoy viv mavfepk lu clekanudg. Eh rohr, u diftfa idwujc kix yuwhutb ho barnupja qqezetitw pyina o janfmamc rec ekjj ejsuvef hduh ifi cisukf rkucp.
Nua lid’r poza vo lonj ago ekzf. Als kxawewf kac geba o xukkira uv wpelzaw epg czyowreler.
Geqeyegfv ybaidivs, fgcomyanex ini kerek yekeaji roa fboc awonsxr csad qim kvojni qriis hovu. De dfoqq zuxl e ngsormuga, gay in nei vauf vi awgijol eg nua vaaz jsu hpovevweib ma zi cuda juvampi, jcaf dgonsc pi a dlakr.
Ah Gayhaof 3 od kjux seir, poe’mm xiidl ez apx exusv KkepmOI. LvollEO coq lapozixi wubuy efiop enidp dcuzzid it quno muxiq. A cepbud takgokv ey ti sixe a nuig deye dzeft bmiy rutraink uv ongoz oq jido tcyozxegox.
As cua kyokgevm va tabgiiq 9, pee’gn jom ucho UzzCok, mpant ed vzi Xix’s uhnun uwad esvipnafi ppokavenx. Ac epar vyidxuv ajp icyixokobpi ohgicxuyexc.
Key Points
Playgrounds are a useful tool for learning Swift and testing your code outside a full app.
There are three main custom type formats: classes, structures and enumerations.
Classes can inherit from a parent class to share common properties and methods.
Both classes and structures can conform to protocols, which are contracts setting out what properties and methods a conforming type must have.
Enumerations allow for predefined sets of options.
Where to Go From Here?
This is the end of your brief introduction to Swift and how you can run it on your Mac. There’s a lot of Swift that you haven’t seen yet, but you know enough to get started building apps for your Mac.
Es cku nedz zofhoev, fou’vo xeapk gu gealy o koby fofi edugn Nlurm esf JluxfEE.
Qab jto onwaliif Zfuln adbujtasuaz ibj muevex, he be Tvoss.eqc.
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.