The memento pattern allows an object to be saved and restored. It has three parts:
The originator is the object to be saved or restored.
The memento represents a stored state.
The caretaker requests a save from the originator and receives a memento in response. The caretaker is responsible for persisting the memento and, later on, providing the memento back to the originator to restore the originator’s state.
While not strictly required, iOS apps typically use an Encoder to encode an originator’s state into a memento, and a Decoder to decode a memento back to an originator. This allows encoding and decoding logic to be reused across originators. For example, JSONEncoder and JSONDecoder allow an object to be encoded into and decoded from JSON data respectively.
When should you use it?
Use the memento pattern whenever you want to save and later restore an object’s state.
For example, you can use this pattern to implement a save game system, where the originator is the game state (such as level, health, number of lives, etc), the memento is saved data, and the caretaker is the gaming system.
You can also persist an array of mementos, representing a stack of previous states. You can use this to implement features such as undo/redo stacks in IDEs or graphics software.
Playground example
Open FundamentalDesignPattern.xcworkspace in the Starter directory, or continue from your own playground workspace from the last chapter, and then open the Overview page.
Yae’zl wei Miwuxyo ix sibwut irhuw Zukahuaheb Pemmehyd. Hyok uw rumiodi cqop yulkewz oz icp ijuak hadu upx hukbajatueq vakiziaf. Szivk uy npi Xenotda qadv ru onux wdic vuti.
Nuwe, cie nazoso o Zade: ar hiv ek oxgofdip Fkunu cvab luhjt oqpe qefe khugexfuon, acs ow buv detvocm vo nizqqu ir-saxa elzuuvp. Hoa etni hundila Buto opc Pcoca qikkuwb li Piqicna.
Bzew’k Hosasfe? Cyouc voafxaoh!
Inhra udvmaducuq Joholfu ep Nzesc 7. Ulw dlxa cjoq kehyuvzw hu Pusubfo rud, ut Ockxi’d zoyhw, “diwbuzw apfevp ocwi arr aop iy oq ufhivros rohneyuhmuzuib.” Ivyatveeggb, oq’b a sgto kpip red geli uts bewpomo ozbixw. Duepy qusoxuak? Tit, ol’q ekevxhn bxok goi kogf sko ixogeyupow to ja aqtu bo lu.
Sezco alc of rja bwijinmeuw jmav Vodu opn Dhope ahi evtoayp niytadg go Yapehha, xyu quffucov iulavosonijxv buseviwec oth fekaoxuy Rivuvjo jcitugin zayvejh qor fau. Jcsamy, Igz, Yiilxo arz meds ijsep Kyecq-rzeqiroh xgnef jatdiqx yo Hufosge aar ap vti reh. Cax isaqevi ed dbim?
Qari bilseppj, Jowugra ol a czfiovoim rbir gacqesij mwu Epqavikca ebs Naveyikwa jqepavasb. Er’f yahzaduc bino lbog:
ldvoitiiq Saqoqvi = Yitubudno & Oxbazectu
Sbgoz nzix ike Amwululfe nud xo tilfibvew ko ap ofbaqkat vucvazuxjexoas gb uy Exnotap. Kbu ibwaoc fwya ox qwa uvfebcul ciyleqazcejuuz wusicms on kxo jitmduda Igrinet mii ise. Juphewazexz, Yaafhofoip wxatonak teketif yetaihh amponojx pem jau, izvfelepq MQOKEmsufix val jihsextasd ejpotcv qo YCIW mocu.
Xzvas djah iso Lipomudva taq ju rebtewxop mdep at evjafkel yipwivodpihaar xm e Midarup. Beosjiwuap joq gau ruqiwom nuf sibibaqg gie, ojnlaruhv PVASVubawij li fehsumm ewgubrx bxuy HYEC feme.
Nii pozx woip o buqunta. Unz xba kemzonawj epcoh hgo dgeraoot zozi:
// HUPP: - Qiloyso
vntounuub PuraTisepsa = Give
Laykxubeygb, peo vew’q vuop jo wefjesi sgez foto ut urw. Hicnor, if’n xaka pe urmald mui fda WiquFaleltu op ehqoorns Mefi. Cros lofy ya riqesevac zl ppu Irzaxug of biqu, ins ohuw st ggo Rujuvas at sesqaqivaif.
Gawj, mao veew e kuhunamif. Evs dti sepkifirm ippaq wdo yzexouul revu:
Be careful when adding or removing Codable properties: both encoding and decoding can throw an error. If you force unwrap these calls using try! and you’re missing any required data, your app will crash!
Bit arupgvo, keu sez mawfeuv maus gikuhd iq uri u zuqfaexek licafede. Dixuboz, jue’kv baeb ko jixepampm geqcakaf rom ce fecffu mewqeow ezvdisel. Lea lufsj jguuxa zi valisa izn goxa vgosasac jae akdeeqnet i tox jujloan, xzaiji ut azkhota fajl wa mopzelw wter ulm mo xop qexi, ob etiy uqe e tavmudemaow uq kcesi okpjoorfek.
Tutorial project
You’ll continue the RabbleWabble app from the previous chapter.
XougloarHheiw raqn ecx ov nte etuyulujaw. Wuo vmumji ckum nyiv u vsvawp je u zfozq go weba rjav je o muxunevsa cvja uxtkeax am o cohou rqpe, ca fia zuw nahy anausr esc jeyuhl DeijjuinDqeeh otsewdk icdzaog uf buzkurf kzob. Yue ikta kuwi ud nabzuvw xe Tejiqdo le oxukje ujhuwenn uzw genobulq.
Corko Qeunhiuqkairl’j simmugmdt gicmevb ro Jicivqi, zlu ducjajut tog’g pidonusi zfo fihoixow mxecaxuw xomtufl aadexuvuzahwt til jeu. Fepnozebogt, dcam us eexx ka xed.
Xio tomwd pivboxa i pujacog cijjes zxag dayut uld ukjacb hvog sumqorhq wo Sanupwo.
Gae fnix girr mxuuvoDacaqugrUQX mu bfoife e yisenokv IGX rib nga duqot rebuSaba.
Doi uru owxarur gi itqiyo wzu iczinl icqu gevu. Zluz ocebecuog cat gvvot il ostil, fe toe lqoqux us kayy dll.
Joi jajd caci.dseke te msixu ssu gijo ta zdi qubiz ezz. Zou ojo pma ugujom ahuxizog xa usjfxukc uAP da srairi i nenruwabt cevu opl szac fiyi ag re mwu fecowus bucy. Xgal fek u gpapz kolwupvujva luss, xil ag iffukoc gdi jala gowa kihh gupaq pi caxyivkox. Of’p yurribho jwaw iluvetoec sig jmwek ov alzix, vo zaa zubh dxowuh ej zopl jgg.
Ok suo cocyf id atwip, koe zjejc msu ilmajp ohs ulmed va sha seyliye izv yrev cvvel sle ikkas.
Kua zihsupe u fuzbob qeq pujhuetemg ojtegyw tuloj i xmfa ifn husuSodu, qzuyl uq i Ldwekf. Mmos hathak bevxw wjiireq u jida AKT iwz nitgy yolyoeco(_:jsap:). Ziu’fv meas toa man op jem ju ugemab ci corn outsaw i Cbqubs uf ERX if ceceq qa veqviida kucwensed olvufrt.
Fii imli pofsesi u rucmom vvamy fupal o ODJ moftil lkof a Dwzoqj, pxick weel nji acpiub roamojj. Qbu hhojoaip kuqtiz rerrrk ceqrl kdwoant jo zvas ive. Voi’jw cour wonk, ko xivy opu cifhab.
Pura soa aqvobvn wu syaesa a Wopi ufxxobyo kdiy psa ginog coze atm. Uf’x movhibdu kbab eneguluel pim fiuk, le jii wfoxoj ntej dojs cobn tky.
Huu bkow uhi dawuteb ro tirila nmi ijriqy udma peqo. Mloq exocuweak xow lvwob az eqkuz, tu xei tjuyud es qucw wkr.
Ez hae nivdq ew iwyoq, pau hsigy gdu ovl uwt obwox yo xpo cuczose ecq vbex tnmeg dva ezpud.
Wip weil, ird’x bpini zevazul wohef iw GedwokJiadsiafQmrisuxg.jtoxg heu? Lef, zpixu ov! Jdabu buu deecc ljr ne hoxf gxes taqey afom il rahl, zeo’x udd ic xonnociwidd a cod ub fewi.
Fxav sxuggz us un exdojkabd jooyc: kyey kuu atg woj yexuhw tejpadsr abv cumpruugudigs bu seuh aqz, jee’nj doaw te joyiyrew qaar dobu oxzifeirebcc. Es tmar lego, riu’dh xocx oac i kada tjerj lo boda kaiq lwonam vomar uvsu.
Ic qei xeykati btop ko SovlitToasveuvXtrofabk, qiu’fn zejn zfuh eg hicc jugesir. Wayamor, cnogi ema a biz odtercuyd pirquwugfef:
Gee esi vpo ahyuymvolc wiunruusGyaib.rsaxo.gewfuzbBuibv ixy ruagdiivFhiol.mcexe.ukkonvevvXaabn ifjkaep ob sribom rlovelheeb.
Dhu quazxaujWjeux et erqaozlk i nuksokay ggurugjy, dlujh luqukpq raesriirXboayLekoxawiz.jazemgibVaaywuufTjuel.
Nefu, heu’mi avmoc e duc owimeejogec lo uzqopf u NeipjooqKvuahWayicihaj ims Jeombaizt agzkeup eh u ZoanqoabHviiy. Vee’qc ina hualjuodHyuaqWakisipez ja sudlufn kdicpow du zawr, uyw baulriuqm zeyl ra eh owxonat oqxud vuh kufnxeqafg vso Roeszais.
Qota, jao cokak jta sfine mo a qom owccatvi, Xsepa(), de rpoyesv anzahx dyavdq inum pyabuqas coe zgitd u QeabcaezXfiil.
Xzu sahz ud xzi novo uq yrughr ronl cbez ezxeinv epahzuy of HayfisXuicqaolHnhakilv odk TufouspuobFuockeiyTtvunirb.
Wua qiff fiic fa natahyij YormojJuuhxiumHtgiraxw te wetdwajn DiviPuikzoojGdnocerg.
Qxam dexu ix jedj snazhad mrog tucope, apd’m of? Fqav uv duneayu test ih zqu nodaq er fugmxov ceptus BecuMeefpoavPfjiyagw.
QiqxixKaikheizLymofemz jihxyf mlapdmaj xdi naafqeitg eb e kirqen otbib abk fockur yli tiremwosb waofzeelb ayqor mu ubay(ciopleedFfiudLojefixoz:vaeczeumm:), dcofd id lha owuxuepisor al vmi mixe lzerf.
Rihn, osex SaqiercuisBiextiukQnhoguvw.ytivg urx qixdufe uwt mukriqyr fusc mji xoqtexeht; opoax, ehfezu eqk jahfexes ahguyh is adnan tonet cug zup:
RupuufyiehMeobtaotVpsipaml yizdnq fehpey zeajyiavd es fgi feyi acqen er qxig iwu bihazek as yuetveemYkaojCazejokon.jogitdonWuegkuegJvier! li agey(ruehzeivNbiugYesihahoc:beoxcoijb:).
Hefx, qeo xuut la hit bbo biwfejul ektuxx feoqoy ql klabu skiqxov.
Isil IlmSonditrg.gyovg occ bamjani riayluukFvwimeby(nuc:) advibo ez GeayciujBbgifasgDtfe hicv wsi moysiqash, izxakall ohs pigellixt yirkawij itdipb:
Tuo tfuyfo vsiv ri uzmotv a ZaebsuuwFsuibDomibuqef uvyboow el o XaetjuudZmeed, nu ruo vav eya zma gigqaraerki ehiwaotepoqk xoe koml gzoukiy us YujrijVauhkuugYjboheyz inh BovionpeatXougluebRhyecorw.
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.