博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小知识三、USerDefault我换个姿势来实现
阅读量:5778 次
发布时间:2019-06-18

本文共 1516 字,大约阅读时间需要 5 分钟。

像往常一样,用字符串当key 缺点:

  • 容易拼写错误
  • 重复定义
  • 多人开发项目,难于管理

eg:

import Foundationimport UIKitprotocol UserDefaultNameSpace {}extension UserDefaultNameSpace {    static func namespace
(_ key:T) -> String where T: RawRepresentable { return "\(Self.self).\(key.rawValue)" }}protocol UserDefaultSettable: UserDefaultNameSpace { associatedtype UserDafaultKey: RawRepresentable}extension UserDefaultSettable where UserDafaultKey.RawValue == String {}extension UserDefaultSettable { /// 关于 Int 类型的存储和读取 static func set(value: Int, forKey key: UserDafaultKey) { let key = namespace(key) UserDefaults.standard.set(value, forKey: key) } static func integer(value: Int, forKey key: UserDafaultKey) { let key = namespace(key) UserDefaults.standard.integer(forKey: key) } /// 关于 String 类型存储和读取 static func set(value: Any?, forKey key: UserDafaultKey) { let key = namespace(key) UserDefaults.standard.set(value, forKey: key) } static func string(value: Any?, forKey key: UserDafaultKey) { let key = namespace(key) UserDefaults.standard.string(forKey: key) }}// MARK: - 使用方式extension UserDefaults { struct Account: UserDefaultSettable { enum UserDafaultKey: String { case name case age case birth } }}class test { func testFunction() { UserDefaults.Account.set(value: 20, forKey: .age) UserDefaults.Account.set(value: "hjq", forKey: .name) }}复制代码

转载地址:http://zsuyx.baihongyu.com/

你可能感兴趣的文章
数据结构化与保存
查看>>
[SpringBoot] - 配置文件的多种形式及优先级
查看>>
chrome浏览器开发者工具之同步修改至本地
查看>>
debian7 + wheezy + chromium + flashplayer
查看>>
AOP
查看>>
.net linq多字段排序
查看>>
进阶开发——文档,缓存,ip限速
查看>>
vue中子组件需调用父组件通过异步获取的数据
查看>>
uva 11468 - Substring(AC自己主动机+概率)
查看>>
Mysql 数据备份与恢复,用户创建,授权
查看>>
沉思录
查看>>
Angular.js中的$injector服务
查看>>
构建之法读书笔记01
查看>>
linux - lsof 命令最佳实践
查看>>
itunes connect
查看>>
kafka性能测试
查看>>
现实世界的Windows Azure:h.e.t软件使用Windows Azure削减50%的成本
查看>>
深入.net框架
查看>>
聚合类新闻client产品功能点详情分析
查看>>
湘潭邀请赛——Alice and Bob
查看>>