DefaultsKit 0.2.0

DefaultsKit 0.2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新发布2019年2月
SPM支持 SPM

Nuno Manuel Dias 维护。



  • 作者
  • Nuno Manuel Dias

DefaultsKit

cocoapods compatible carthage compatible language swift

简体中文

DefaultsKit 利用 Swift 4 的强大 Codable 功能,在 UserDefaults 的基础上提供一个 简单强类型 包装。它只用不到 70 行代码就能完成这项工作。

安装 >>说明<<

使用

实例化 Defaults 或获取其 shared 实例

let defaults = Defaults() // or Defaults.shared

然后

// Define a key
let key = Key<String>("someKey")

// Set a value
defaults.set("Codable FTW 😃", for: key)

// Read the value back
defaults.get(for: key) // Output: Codable FTW 😃

检查键是否有值

if defaults.has(key) { 
    // Do your thing
}

如果您只需要知道键/值对存在,而无需实际使用该值,请使用 has() 方法而不是可选的 get(for:key)。对于复杂对象,它将防止不必要的反序列化。

隐式成员表达式

您可以通过扩展 DefaultsKey 来找到对您的键的便利包装器。这允许您使用 隐式成员表达式

// Extend with a custom key
extension DefaultsKey {
    static let someKey = Key<String>("someKey")
}

// Then use it like this
defaults.set("Some key", for: .someKey)
defaults.get(for: .someKey) // Output: Some key

复杂对象

要存储复杂对象,只需符合Codable 协议

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

然后

// Create a key
let key = Key<Person>("personKey")

// Get an instance of your Codable conforming enum, struct or class
let person = Person(name: "Bonnie Greenwell", age: 80)

// Set the value
defaults.set(person, for: key)

最后

// Read it back
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]
}

// Get a Codable conforming instante
let person = Person(name: "Claire", pets: [.cat])

// Set the value
defaults.set(person, for: key)

// And read it back
let person = defaults.get(for: key)
person?.name        // Claire
person?.pets.first  // cat

许可

DefaultsKit 采用 MIT 许可证发布。详情请见 LICENSE

我们需要帮助

审查/翻译 README.zh-CN.md 为中文

中文是世界上使用最多的语言之一,我希望 DefaultsKit 更具包容性,不幸的是我不会中文。如果你会说中文,并且想帮忙,请参见 问题 #1

谢谢🙏