如何使用 UserDefaults 儲存和讀取自定義的物件

法蘭克的 iOS 世界
2 min readOct 12, 2020

--

在實務上很常遇到一個狀況,當維護它人專案時,需要 永久儲存自定義的物件,但是該專案確沒有任何一個可使用的工具,例如:SQLite 或 Core Data 等等,此時,有沒有替代的方案可選呢?答案是有的。可使用 UserDefaults 搭配 Codable protocol將自定義的物件轉成 Data 存入,取出時再將 Data 轉成自義的型別即可。

宣告一自定義的物件

宣告一自定義的物件

撰寫存入、取出 UserDefaults 的 func

透過 encode(_:)decode(_:from:)的方法將自定義物件編碼和解碼來存入和取出。

撰寫存入、取出 UserDefaults 的 func

生成自定義物件並測試將其存入 UserDefaluts 後再取出

生成自定義物件並將其存入和取出 UserDefaluts

升級存入和取出 UserDefaults 的 func

利用 Generic function 將 saveDataInUserDefaults(:) 和 loadDataFromUserDefaults() 來升級成一個功能相同,但型別不同的 func,可讓所有的自定義物件都可透過它們來達成存入和取出 UserDefaults 的動作。

首先宣告 enum SavedKeyInUserDefaults 用來識別 UserDefaults 的 key,再將 saveDataInUserDefaults(:) 和 loadDataFromUserDefaults() 的型別參數宣告成泛型,並限制其必須遵從 Codable protocol

如果您喜歡我的文章,請多按幾下「拍手」給我鼓勵,或是按「follow」讓我持續提供好文章給您。

--

--

No responses yet