V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
iOS 开发实用书单
iPhone App Development: The Missing Manual
Cocoa and Objective-C: Up and Running
Cocoa Programming for Mac OS X
深入浅出设计模式 Head First Design Patterns
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
V2EX  ›  iDev

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

  •  
  •   banxi1988 · 234 天前 · 700 次点击
    这是一个创建于 234 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天发了介绍代码生成脚本的贴之后, 睡觉前感觉我可以提供一个更 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 告别.

    2 回复  |  直到 2017-01-02 13:38:50 +08:00
        1
    danielwyo   233 天前
    不错, 可以点个赞. 不过, 用 Default 作为类名似乎有点不妥, 虽然不是关键字, 但总归会容易跟小写的 default 混淆.
        2
    banxi1988   232 天前 via Android
    @danielwyo 这点我考虑过。但是没有想到更好的名字了。 按理说叫 UserDefault 应该可以。但补全时会跟它的复数类混淆。 其实很多 Cocoa 类都有用 default 作为变量名呢?在 Swift 3 中 甚至 直接用 default 关键词 作为变量名
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2623 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 57ms · UTC 02:18 · PVG 10:18 · LAX 19:18 · JFK 22:18
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1