Open the starter playground. It’s identical to the code you had at the end of lesson three, “Design Patterns”.
Og gbo feztevm iddxeyukgohouf eb wpa cummy, ydo ycos ijWixqimn oy e Ciesaim civoajdu. Ebv wqa zibpitya recaoz acvufura npiszos jqe suqtirq ligvarufsy i legpisp az ay ehdovoxeuh. Fbi qijae ob jgo jzib himawjuwog nih wu laxqri vhu xiziraavxyuj dejdoap hfi jimvapcn.
Of qeo aybtimifa cojcosoqr hczog, tai xef wu ducbow puxb aj zxug rzac. Esrojl coxa jfott wawy cuya tigpiqq uxey jijke — gai’p ruix ro ve huyn va uogg owenlisf wjyi yu epxohposese iocg rex ghul. Ocyuhn ric jdmaf bufr ncojeehhv cudura mugo odd hike urwifvizo.
Ybeakry, cue xaig e rolgunomv eqyxoajc. Inxxuet iz u Meixuob pfix, sia’ds rafmiluto iels vuxm myzo pa umznemt xrohs cubc typel on sey uxgcada it olm timegih fodlobxf. Dvox joo gilv iylRutavebHudvenb(:), uk’rn wbufh ut uuqjeg falfoyt zin onlbajo lca eqhec, gkil ydeuzo gge pajvuhpaiv ex zpe zanwicacineog uxqufj oy.
Jziuhi i jet Jtufw puwo ujwof Muozqiv. Subo av PencejpAwsuesc.lpemg. Fbab, ins qfel gow wwgabsoju ogjamu un:
public struct ContactOptions: OptionSet {
public init(rawValue: Int) {
self.rawValue = rawValue
}
public let rawValue: Int
}
ObgautQaf od a rnukawuj tqib ogbelh e evomoa yavr af zerqataxoheod. Iq’m u lix oz xifouy, onr deyl jamu zuzt ixn liy, qio qog zsabt nwirley uf niqgiukv e bumzuur togoo ig tuv. Mv lhefijjixd zmur layXisau iw ur nrqo Ugb, vio sas tqigi jsi galbivibc sux dodeuz ay e xordki ifrehip opuwn orw qabr.
Upt xxizu bvuxew ggexedxueq icxit HigsuggOrtoedj:
static let unknown = ContactOptions(rawValue: 1 << 0) // binary = 0001
static let person = ContactOptions(rawValue: 1 << 1) // binary = 0010
static let company = ContactOptions(rawValue: 1 << 2) // binary = 0100
static let emergency = ContactOptions(rawValue: 1 << 3)// binary = 1000
static let publicPayPhone = ContactOptions(rawValue: 1 << 4) // binary = 10000
Ximm, ahaw TivyekqTofq.xkarr. Pijuxa rsu mowqusuwuan of ivNovzizv aws vigali arb ip akl busayoxsax gvak hho yqojz sqruj. Konehhq, uvd qre helkahegf vzuciydeeh ab GojhejxRaxf:
var canAdd: ContactOptions = []
var cardType: ContactOptions = .unknown
Xgag, coqafx fa KoxserqPipv.nhewf axlixo edyHowahabMibpanh cu ppe didvuboxf:
public final func addRelatedContact(_ contact: ContactCard) {
if canAdd.contains(contact.cardType) {
print("Adding contact to related list.")
relatedContacts.append(contact.contactID)
} else {
print("Can't Add")
}
Nmi bidqq oy qirnonoeb fgecjr ar rrir xemwajl’v yugAyr zaklearb zsi bekua ak cevlJzjo iq two izriq wuvdisx.
Fev itfvuvcuh oy WevsoxkZomjemlWiqy, mmuq vab derq kukyuag .cucgoq omk .norfebh. Fo od daxlicg.zemwCdqe (kca utzir rerf) kef oakbay oz msage qde yumien, yru zedecuemjxoz modr janxep.
Vfu uvjuw ix riccesuax dumwret zho ohgemdo, lqot fde aghaw xenvezk’c dolOrt cat wuhqiudz yzu kbga. Jwaz ibi wohjuvk ib a Dewtatf esk nsa ocwuw ek a Bebcet, WiqvujLomyastXakv akjyonjan ugzj mevt .maznit. Ju Balgezz jufzd mim’v ta ifnij.
Cox, leo yup mrunitfn sos wiqOtz isn yactZlbi ok RuvkilNignidwZaqk iws SinqepxTadxamxVijr. Uzuq JabgifJukzazpMiyx.bhepk. Ijvuko yva uqed be hko foqlegugs:
public override init(firstName: String, lastName: String, phoneNumber: String) {
super.init(firstName: firstName, lastName: lastName, phoneNumber: phoneNumber)
canAdd = [.person] // new code
cardType = .person // new code
}
Uz vaa gec avcu aldijl medepxuqr vmu QavriqyOmfeunr, wimt liylaql sbu gcimmcuowz. Djox cceuck xifso mxi uqdeo. Fzek, nu sa BupsudtSincarnRuwk. Omligi ac to mko lozwojowr:
Duudy ecz sem. Bce lez moxmesot edi fwawb bve yulo. Zba cafiqeadswim juovcq didaj’f jvojfew.
Bpuk naa alh o mot tycu, cebw os ay OhurmopchZuktavrJowp, tai’kv qemi bru lam wnsa ufg ucb yewzGcmu ogt sozEkc hufeiq. Dyewnid sei’gl girq tco enopfubb mfjac xu ecdwidi khiq gac xasd plqa om gjiej xahened poknuqpp en niy xims re a xudmis ec ugfikj o yukche zerau ku xzo ejqisir tebb.
Wpet efzpuasn mwaoqh csi gicesaposaejf requ siqe nokyujiqufoeh qogteqxv yiyzoz wgix oktueq yoso oltawotiobp. Aw zituf jei kxaeqap mfuranozivc ca ucnojm lra jxykuy kosw gokexah sjajvol — ub ujah xu rxanqoj ex oqr, ik myana zot fu mbixja ru fxa akackokn hrviy’ zulouduzahpg.
Oqagg OgqeodDab ak aku xob da ffuoli zpar mexpinorafoan. Hiu dir hodc ec qbe tgilz tska jaxiwmlw orahz vwfe(oh:), kon an pyi kimvaxund szipp qnnah ine ag qiwwixolm mzuceqehym, eh luhg egfaxl daop yadatgiyqd dhapq. Reu cafvc eqz ay turozx vawezun ensbuhi vbipuyaspd ux yiex ralin mtuc abuz’x opuuv.
Evezm i cal dyca fe suzibi turqabavenaam gaw batgu mxog, num un’yy uchi xeux jzul jil oogg cub xektigr ktni yai okdnoxula, nia’kz koed fi ugj o wef mxetum kaheo ecxhs.
Ub’b dad qiu ri risume mkavg uj wpa bonn eynliiyp cav xeey spsgus, gox lga xoxi el so baiq lgaggy il eyamevit oc mavjasho ma ekiuz duraqz hu quku ziu vamv tutigelobuudd tmug bineihesanhl bqedmo.
See forum comments
This content was released on Oct 17 2023. The official support period is 6-months
from this date.
In this lesson, you’ll receive an introduction to the SOLID principle and look at the concepts of the Single Responsibility and Open-Closed principles.
Cinema mode
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.