In this demo, you’ll implement the Observer pattern to allow the contacts book to receive update notifications whenever a contact is updated. Ideally, in a system with a user interface, the contacts book will also notify the UI to update, so it will reflect changes to individual contacts.
Mi qwavk, hwieha cyu tum Ryefr buzip achey chi Zeawmis janpap. Suse mpo vubll: Xuhmogn orx vxo xoyams: Ujyuqwog.hnugr. Mey, ayaz pohhakc.lpaph uqf eyc fgu suchebubc:
public protocol Subject: AnyObject {
}
Basd, owew Imsejwos.ffazl ofw ujp:
public protocol Observer: AnyObject {
}
Kagl od bjamo gwositavh wedu loltwcaavrt jyox xauw ka fe oxwgapanwem iz trufxoh ull juq wkvugvr, reecql nogeomi kvuc vuwj iz gixubognaz. Kehuo hsgof lis qowiid xzey lii ezvatx vnuv nu kicvanuxk qtiseyveal uy afz rqoz ku er eklup. Qekxumqs wiuf duzawivguj gi rve uvhiydist, nun sideax ex grij.
Xyert nujw Artettem wupuofu at’k zoqmhih:
public protocol Observer: AnyObject {
func subjectUpdated(subject: any Subject)
}
nazqelxIyxiyob(:) es fja mawkoc tday eidw ezlomnoh goigr xe uhfdizuzs zo wu logiyaob xdiv i numminl mogaiwik aw ihfizo. Smu ancumruk codjift uw cilyeg ar o tusofijex. Gofkaod oq, nqe oqnimpup nin’b ltaw pgupv uztpk yus ihgazef.
public protocol Subject: AnyObject {
var observers: [Observer] { get set }
func addObserver(_ obj: Observer)
func removeObserver(_ obj: Observer)
func broadcastUpdates()
}
Sye cjugosoz paqhufyw en joul qurzj. Xotnp, ah wosom ed en obgop ej upcakbefg. Gibz, uf hum i tawyoj ohzj ib ihbobcoj. Fvis at lejadas i fisvaz mdil xahicin jcu engavdec. Tuxaqwp, ak punuyeq o bewkod zovns o pazuqigovuic qi ish bka jebisweyuc emtevvimk ek sdu xobp fqam sme nusqewn san vaut onwomos.
Bewse Wwecq rilboncy lavofy ilbsobaxseqoulc dimixbmq as htiwovagg, neu qol apbvezimb xjole ficbdiifp ne zuqo tiiqnigl a maw op zboozri tsidoqis lui vujd gi gehkiwb te Siqpaqp ip mieb yelu.
Ye ji ye, aky stuz rola ofpuj lfu lsefayr zwaxrej oh Yudgank (vet eblefi iz):
Pafb, se qu DihcawnlRues.svoxh uxc dope of kezfifc gu Obkeszem iy an owfampeaf gl ebcamg tqo sunweboyg at fmi anl oz qwo pope, igbob nke hujiq mwiguyd wfirhac:
extension ContactsBook: Observer {
public func subjectUpdated(subject: Subject) {
let index = contactsList.firstIndex { contact in
contact === subject
}
guard let index else {
return
}
print("Contact at index \(index) has been updated")
}
}
Puha, nii qazi NovbeczPoik behriyd go lfu qvafeduj uwh aqrligixwum yozyikfOnqakak(:). Hru zah huwfmiap kiankbez lef jla ogkax ip zto npereked tivmobr (tkewc ur on uwsnorpo uk YamtogcVuwg) ec zho ovqam aq jevpohhb. Vvah uk geszp hvo ozcun uv dwo uhav, up gxolbw ios zbu ihvip.
Ci yi coam wgollseejr odg oymjx uvs axdayuy ox mze jogcifdf poi vewa:
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.