⚠️已弃用⚠️

请使用新的 Stores 库来代替。


Build Status Test Coverage Swift versions Platforms MIT

概括来说

你肯定喜欢 Swift 的 Codable 协议,并且到处都在使用它,谁不喜欢呢!这里提供了一个简单轻便的方法,只需几行代码即可存储和检索**适量😅**的 Codable 对象!


v3.0 版本新增


安装

Swift 包管理器

  1. 将以下内容添加到你的 Package.swift 文件中
dependencies: [
    .package(url: "https://github.com/omaralbeik/UserDefaultsStore.git", from: "3.0.0")
]
  1. 构建你的项目
$ swift build

手动

Sources 文件夹添加到你的 Xcode 项目中。


用法

假设你有 2 个结构体;UserLaptop 如下定义

struct User: Codable {
    var id: Int
    var firstName: String
    var lastName: String
    var laptop: Laptop?
}
struct Laptop: Codable {
    var model: String
    var name: String
}

以下是如何在 UserDefaultsStore 中存储它们

1. 遵循 Identifiable 协议并设置 id 属性

Identifiable 协议让 UserDefaultsStore 知道每个对象的唯一 ID 是什么。

struct User: Codable, Identifiable {
    ...
}
struct Laptop: Codable, Identifiable {
    var id: String { model }
    ...
}

2. 创建 UserDefaults 存储

let usersStore = UserDefaultsStore<User>(uniqueIdentifier: "users")
let laptopsStore = UserDefaultsStore<Laptop>(uniqueIdentifier: "laptops")

3. 瞧!一切就绪!

let macbook = Laptop(model: "A1278", name: "MacBook Pro")
let john = User(id: 1, firstName: "John", lastName: "Appleseed", laptop: macbook)

// Save an object to a store
try! usersStore.save(john)

// Save an array of objects to a store
try! usersStore.save([jane, steve, jessica])

// Get an object from store
let user = store.object(withId: 1)
let laptop = store.object(withId: "A1278")

// Get all objects in a store
let laptops = laptopsStore.allObjects()

// Check if store has an object
print(usersStore.hasObject(withId: 10)) // false

// Iterate over all objects in a store
laptopsStore.forEach { laptop in
    print(laptop.name)
}

// Delete an object from a store
usersStore.delete(withId: 1)

// Delete all objects in a store
laptops.deleteAll()

// Know how many objects are stored in a store
let usersCount = usersStore.objectsCount

只想存储单个项目?

使用 SingleUserDefaultsStore,它可以存储和检索 IntDoubleString 或任何 Codable 类型的单个值。

要求

感谢

特别感谢

致谢

图标由 freepik 制作,来自 flaticon.com

许可

UserDefaultsStore 基于 MIT 许可证发布。有关更多信息,请参阅 LICENSE