2025 年最新 Swift 程式教學:如何使用 UserDefaults 和 SQLite 進行數據存儲

在 Swift 中,我們可以使用多種方法來實現應用程序的數據持久化。本文將深入介紹如何使用 **UserDefaults** 類來實現偏好設定存儲,以及如何利用 **SQLite** 數據庫進行更複雜的數據持久化。

使用 UserDefaults 類實現偏好設定存儲

**UserDefaults** 類是一個簡單而高效的方式來存儲應用程序的基本偏好設定。它能儲存基本數據類型,如整數、浮點數、字串和布林值,甚至可以存儲自定義對象(需遵循 NSCoding 協議)。

要使用 UserDefaults,首先需要創建一個 UserDefaults 對象:

“`swift
let defaults = UserDefaults.standard
“`

接下來,您可以使用 `set` 方法來儲存偏好設定:

“`swift
defaults.set(“John Doe”, forKey: “name”)
defaults.set(25, forKey: “age”)
defaults.set(true, forKey: “isMarried”)
“`

要讀取這些偏好設定,您可以使用 `object(forKey:)` 方法:

“`swift
let name = defaults.string(forKey: “name”) ?? “Unknown”
let age = defaults.integer(forKey: “age”)
let isMarried = defaults.bool(forKey: “isMarried”)
“`

此外,UserDefaults 還提供了方法來檢查偏好設定是否存在,以及刪除偏好設定:

“`swift
if defaults.object(forKey: “name”) != nil {
print(“Name exists”)
} else {
print(“Name does not exist”)
}
“`

使用 SQLite 數據庫實現數據持久化

**SQLite** 是一種輕量級的開源關聯數據庫,非常適合用於移動應用程序。它可以在 iOS 等多個平台上使用,並且可以無縫集成到 Swift 應用程序中。

要使用 SQLite,首先需要創建一個數據庫連接:

“`swift
import SQLite

let db = try! Connection(“path/to/db.sqlite3”)
“`

接下來,可以使用 `createTable` 方法來創建一個表:

“`swift
let users = Table(“users”)
let id = Expression(“id”)
let name = Expression(“name”)
let age = Expression(“age”)
let isMarried = Expression(“isMarried”)

try db.run(users.create(ifNotExists: true) { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(age)
t.column(isMarried)
})
“`

插入數據使用 `insert` 方法:

“`swift
let user = User(name: “John Doe”, age: 25, isMarried: true)
try db.run(users.insert(name <- user.name, age <- user.age, isMarried <- user.isMarried)) ``` 要讀取數據,可以使用 `select` 方法: ```swift let query = users.select(id, name, age, isMarried) for user in try db.prepare(query) { let id = user[id] let name = user[name] let age = user[age] let isMarried = user[isMarried] print("User ID: \(id), Name: \(name), Age: \(age), Married: \(isMarried)") } ``` SQLite 還提供了更新和刪除數據的方法,使其成為一個強大的數據管理工具。

總結

本文介紹了如何使用 Swift 中的數據存儲技術,包括如何使用 UserDefaults 來儲存用戶偏好設定,以及如何利用 SQLite 數據庫進行數據持久化。掌握這些技術能夠幫助您開發出更加穩定和可靠的應用程序,提升用戶體驗。

常見問題解答(Q&A)

**Q1: UserDefaults 和 SQLite 有什麼區別?**
A1: UserDefaults 適合存儲小型的用戶設置和基本數據,而 SQLite 更適合存儲大量結構化數據和需要複雜查詢的數據。

**Q2: 如何在 UserDefaults 中儲存自定義對象?**
A2: 您需要使自定義對象遵循 NSCoding 協議,然後將對象編碼為 Data 格式,最後使用 `set(_:forKey:)` 方法儲存。

**Q3: 在 SQLite 中如何處理數據更新?**
A3: 使用 `update` 方法可以更新表中的數據,具體實現會根據您的數據結構而有所不同。

Categorized in:

Tagged in:

,