Skip to content

Latest commit

 

History

History
130 lines (90 loc) · 3.8 KB

README.zh-CN.md

File metadata and controls

130 lines (90 loc) · 3.8 KB

DefaultsKit

cocoapods compatible carthage compatible language swift

English

DefaultsKit 是一个利用 Swift 4 强大的 Codable,在 UserDefaults 基础上提供一层简单强大的封装。它仅使用少于 70 行代码来实现这些功能。

如何安装 >> 指南 <<

使用说明

第一步: 实例化或者从 Defaults 获取一个 shared 实例

let defaults = Defaults() // 或者使用 let defaults = Defaults.shared

第二步:

// 定义一个键 (key)
let key = Key<String>("someKey")

// 设置值 (value)
defaults.set("Codable FTW 😃", for: key)

// 通过设置的 key 来查看返回的 value 结果值
defaults.get(for: key) // 输出: Codable FTW 😃

判断某个键是否含有某个值

if defaults.has(key) { 
    // 书写你自己的代码
}

如果你只需要知道该键值对 (key,value) 是否存在,而不需要使用该 key 使用的返回值 (value),你可以使用 has()这个方法代替可选的 get(for:key) 方法。对于一些复杂的对象,它可以减少避免一些不必要的反序列化。

隐式成员表达式

通过扩展DefaultsKey,你可以方便的包装你的键。这允许你使用隐式成员表达式

// 使用自定义键扩展
extension DefaultsKey {
    static let someKey = Key<String>("someKey")
}

// 然后这样使用
defaults.set("Some key", for: .someKey)
defaults.get(for: .someKey) // 输出: Some key

复杂对象

存储一个遵循 Codable 协议的复杂对象:

struct Person: Codable {
    let name: String
    let age: Int
}

然后:

// 创建一个键
let key = Key<Person>("personKey")

// 获取一个遵循 Codable 协议的枚举,结构体或者类的实例
let person = Person(name: "Bonnie Greenwell", age: 80)

// 赋值
defaults.set(person, for: key)

最后:

// 查看 key 返回值的 value
let person = defaults.get(for: key)
person?.name // Bonnie Greenwell
person?.age  // 80

嵌套对象的存储

只要是遵循 Codable 协议的对象,你都可以嵌套地使用它们。

enum Pet: String, Codable {
    case cat
    case dog
}

struct Person: Codable {
    let name: String
    let pets: [Pet]
}

// 获取一个遵循 Codable 协议的实例
let person = Person(name: "Claire", pets: [.cat])

// 赋值
defaults.set(person, for: key)

// 查看 key 返回值的 value
let person = defaults.get(for: key)
person?.name        // Claire
person?.pets.first  // cat

开源协议

DefaultsKit 使用 MIT 协议,更多内容可以查看 LICENSE

寻求帮助

汉语是世界上使用人数最多的语言,我希望 DefaultsKit 能被更多的人使用,但是我不会说汉语。如果你会汉语,而且愿意帮忙,请看看 issue #1

谢谢 🙏