В тази лекция, ще се запознаем със различни механизми за съхраняване на данни, които можем да възстановим при следващо стартиране. Ще разгледаме няколко рачлини подхода:
UserDefaults
- най-лесния и бърз начин, който ни позволява да съхраняваме данни с малък обем. Често се използва за съхраняване на конфигурации или текущото състояние на приложението, така че при следващо стартиране, потребителя да може да продължи от там от където е спрял.KeyChain
- това е правилния начин за съхранение на информация, която съдържа чувствителна информация, като пароли, потребителски имена, ключове за криптиране/декриптиране. Данни, които трябва да са сигурни се съхраняват вKeychain
, защото това е механизмът предоставяне отiOS
за сигурно съхранение.Files
- класически файлове, които се съхраняват на файловата система. Ако искаме да реализираме ниво на сигурност, можем да ги криприаме, а ключовете да поставим вKeychain
. Файловете в общия случай са binary (двоични), а в частност можем да съхраняваме текст, който обръщаме в поток от данниData
.Firebase
- това е облачна услуга предоставена отGoogle
, която има много различни "лица". Ще разгледаме основния начин да съхраняваме данни в "облака", изпозлвайки решението предоставено отGoogle
. Това решение ни позволява с лекота да синхронизираме данни между различни устройства (може да са на различни потребители, но може и да са на един и същ). Предимството пред останалите подходи, които разглеждаме, е че при евнтуално унищожаване на устройството на потребителя, пак можем да възстановим данните, понеже те не са само на него, а "жиевеят" на отдалечен сървър. Неодтатък е, че за да се работи с firebase трябва да има връзка с интернет, за да може да се реализира прехвърлянето на данните в "облака".
Това е базов механизмът за съхранение на данни локално на устройството, който е част от iOS. Той ни позволява да асоциираме различни типове данни с уникални ключове. При проверка за наличние на данни, търсим такива по зададен ключ.
Ето, как можем да реализираме записване на данни от тип string
.
Подобно на записването раполагаме и с механизъм за четене на данни. В следващия пример, се вижда че ако няма данни асоциирани с този ключ метода връща nil
.
Понеже употребата е масова, с механизмът предоставен от PropertyWrapper-ите имаме лесен и бърз достъп до тази функционалност. Трябва да маркираме определено пропърти като AppStorage
и то вече е свързано със съответния ключ, в който можем да записваме данни чрез UserDefaults
.
Ако имаме пропъти и от друга часто от приложението запишем нови данни зад този ключ (в примера app.title
), виждаме директно промяна в UI, защото при промяна се задейства цикъла за обновяване на SwiftUI
.
Естествено, когато изпозлваме това пропърти, неговата стойност остава съхранена между различните стартирания на приложението.