Skip to content

Latest commit

 

History

History
47 lines (26 loc) · 5.04 KB

Lecture10.md

File metadata and controls

47 lines (26 loc) · 5.04 KB

Persistance

В тази лекция, ще се запознаем със различни механизми за съхраняване на данни, които можем да възстановим при следващо стартиране. Ще разгледаме няколко рачлини подхода:

  1. UserDefaults - най-лесния и бърз начин, който ни позволява да съхраняваме данни с малък обем. Често се използва за съхраняване на конфигурации или текущото състояние на приложението, така че при следващо стартиране, потребителя да може да продължи от там от където е спрял.
  2. KeyChain - това е правилния начин за съхранение на информация, която съдържа чувствителна информация, като пароли, потребителски имена, ключове за криптиране/декриптиране. Данни, които трябва да са сигурни се съхраняват в Keychain, защото това е механизмът предоставяне от iOS за сигурно съхранение.
  3. Files - класически файлове, които се съхраняват на файловата система. Ако искаме да реализираме ниво на сигурност, можем да ги криприаме, а ключовете да поставим в Keychain. Файловете в общия случай са binary (двоични), а в частност можем да съхраняваме текст, който обръщаме в поток от данни Data.
  4. Firebase - това е облачна услуга предоставена от Google, която има много различни "лица". Ще разгледаме основния начин да съхраняваме данни в "облака", изпозлвайки решението предоставено от Google. Това решение ни позволява с лекота да синхронизираме данни между различни устройства (може да са на различни потребители, но може и да са на един и същ). Предимството пред останалите подходи, които разглеждаме, е че при евнтуално унищожаване на устройството на потребителя, пак можем да възстановим данните, понеже те не са само на него, а "жиевеят" на отдалечен сървър. Неодтатък е, че за да се работи с firebase трябва да има връзка с интернет, за да може да се реализира прехвърлянето на данните в "облака".

UserDefaults

Това е базов механизмът за съхранение на данни локално на устройството, който е част от iOS. Той ни позволява да асоциираме различни типове данни с уникални ключове. При проверка за наличние на данни, търсим такива по зададен ключ.

Ето, как можем да реализираме записване на данни от тип string.

Подобно на записването раполагаме и с механизъм за четене на данни. В следващия пример, се вижда че ако няма данни асоциирани с този ключ метода връща nil.

Понеже употребата е масова, с механизмът предоставен от PropertyWrapper-ите имаме лесен и бърз достъп до тази функционалност. Трябва да маркираме определено пропърти като AppStorage и то вече е свързано със съответния ключ, в който можем да записваме данни чрез UserDefaults.

Ако имаме пропъти и от друга часто от приложението запишем нови данни зад този ключ (в примера app.title), виждаме директно промяна в UI, защото при промяна се задейства цикъла за обновяване на SwiftUI.

Естествено, когато изпозлваме това пропърти, неговата стойност остава съхранена между различните стартирания на приложението.

KeyChain

Files

Firebase TBD