[Swift] EasyDefaults: 以 Modern & Swifty 的方式读写 UserDefaults

2016-12-31 17:46:43 +08:00
 banxi1988

昨天发了介绍代码生成脚本的贴之后, 睡觉前感觉我可以提供一个更 Modern, Easy, Swifty 的方式的 帮助读写 UserDefaults. 今天抽空实现了. 首先来看看它是怎么使用的.

struct MWebSettings{
	static var baseFont = Default<String>("baseFont", defaultValue:"Menlo")
	static var baseFontSize = Default<Int>("baseFontSize", defaultValue:15)
	static var lineSpacing = Default<Int>("lineSpacing", defaultValue: 1)
	static var avatarUrl = Default<URL>("avatar")
	static var favoriteFruits = Default<[String]>("favoriteFruits")
}

// 写入值.
MWebSettings.baseFontSize.value = 13
// 读取值
MWebSettings.baseFontSize.value // 13

主要核心在一个包装的泛型 Default<T>, 虽然是泛型,但是提前做了支持的类型判断. 以提示你使用 UserDefaults 支持的数据类型.

特色

  1. 泛型, 类型安全.
  2. 声明式, 声明 Defaults
  3. 可以直接提供默认值.
  4. 简单易用, 开箱即用.
  5. 拥有完善的测试代码, 文档

代码在: https://github.com/banxi1988/EasyDefaults

这个算是我第一个测试代码比较完善, 而且加了适当文档的开源项目了. 更重要的是, 实现得简单. 在这 2016 年最后一天, 当作是以比较完善的方式向 2016 告别.

3070 次点击
所在节点    iDev
2 条回复
danielwyo
2017-01-01 20:21:04 +08:00
不错, 可以点个赞. 不过, 用 Default 作为类名似乎有点不妥, 虽然不是关键字, 但总归会容易跟小写的 default 混淆.
banxi1988
2017-01-02 13:38:50 +08:00
@danielwyo 这点我考虑过。但是没有想到更好的名字了。 按理说叫 UserDefault 应该可以。但补全时会跟它的复数类混淆。 其实很多 Cocoa 类都有用 default 作为变量名呢?在 Swift 3 中 甚至 直接用 default 关键词 作为变量名

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/331466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX