SwiftyUserDefaults对NSUserDefaults的封装扩展

SwiftyUserDefaults 是对NSUserDefaults的一些封装和扩展,这个库这个只有一个类,操作起来十分简单方便:

这里只有两个步骤来使用SwiftyUserDefaults:

step 1:自定义你的键

extension DefaultsKeys{

  /// 存储用户手机号码

    static let userName = DefaultsKey<String?>("username")

    /// 存储当前定位地区

    static let regionName = DefaultsKey<String?>("regionName")

}

step 2:开始使用它

//为用户手机号码赋值
Defaults[.userName] = "KangKang"

//取值也是十分方便
let userName = Defaults[.userName]

//还有另外一种方法来存储你的键值,就是直接跳过步骤1不扩展DefaultsKeys也可以实现:

var user = Defaults["user"].string   //指定键的类型NSLog("user:\(user)")  //因为一开始并没有对user赋值,从控制台可以看到输出结果:user:nil

var userValue = Defaults["userValue"].stringValue //取键的值NSLog("userValue:\(userValue)")  //因为一开始并没有对userValue设置值,从控制台可以看到输出结果:userValue:

// 直接给键赋值
Defaults["users"] = "KangKang"var getusersValue = Defaults["users"].stringValue NSLog("getusersValue:\(getusersValue)")//getusersValue:KangKang//此处若是改成 var getusersValue = Defaults["users"].string  //便会输出getusersValue:Optional("KangKang")

//hasKey判断是否存在该key,返回布尔值

if Defaults.hasKey("users"){
     NSLog("users 存在")
 }else{
     NSLog("users 不存在")
 }

//移除指定的key

Defaults.remove("users")

这是我对这个库的一些基本了解,若是出现了错误,望及时指出。你们要是想要了解更多,可以去github看看: https://github.com/radex/SwiftyUserDefaults

时间: 2024-08-14 11:32:23

SwiftyUserDefaults对NSUserDefaults的封装扩展的相关文章

封装扩展Kendo UI Grid

封装后的代码如下: $(function () { function KendoGrid() { this.gridOptions = { height: "100%", sortable: true, reorderable: true, scrollable: true, filterable: { mode: "menu", extra: false, operators: { string: { contains: "Contains",

Kafka客户端二次封装扩展总体设计

前言背景 消息系统经过多年使用和运维管理平台开发迭代,能较好支持支撑业务发展,公司主流语言为java,但缺乏一个基于Kafka二次封装简单好用的java客户端.遇到问题如下所示: 使用好kafka客户端对业务要求高,非专业技术方向很难有精力全面掌握 异常情况会catch不全 客户端生产消息及双活机房容灾缺失 集群升级难度增加,因为无法全面及时掌握客户端信息(kafka版本.groupid) 不支持动态配置更新,业务使用错误及引发的潜在故障无法及时修正,例如Producer写入倾斜导致磁盘报警,参

swift常用第三方库

网络 Alamofire:http网络请求事件处理的框架. Moya:这是一个基于Alamofire的更高层网络请求封装抽象层. Reachability.swift:用来检查应用当前的网络连接状况. 综合 Perfect:swift的服务器端开发框架(针对于移动后端开发.网站和web应用程序开发). RxSwift:函数响应式编程框架,是ReactiveX的swift版本,可以简化异步操作和事件/数据流. Dollar:无需扩展任何内置对象就为Swift语言提供有效的函数式编程辅助方法,类似于

React-Native开发之原生模块封装(Android)升级版

 本文主题:如何实现原生代码的复用,即如何将原生模块封装. 有时候我们的应用需要进行访问原生平台系统的API接口,但是React Native可能还没有封装相应功能组件.还有可能我们需要 去复用一些原生java代码而不是让JavaScript重新去实现一遍.或者我们可能需要些一些更加高级的功能代码,所线程相关的.例如: 图片处理,数据库以及一些高级功能扩展之类的. React Native平台的开发其实本身也是可以让你写纯原生代码并且还可以让你访问原生平台的功能.这是一个比较高级的功能不 过官方

jQuery框架-3.jQuery自定义封装插件和第三方插件

一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge the contents of two or more objects together into the first object.把两个或者多个对象合并到第一个对象当中: jQuery.fn.extend   Merge the contents of an object onto the jQue

爱你不容易 —— Stream详解

作为前端,我们常常会和 Stream 有着频繁的接触.比如使用 gulp 对项目进行构建的时候,我们会使用 gulp.src 接口将匹配到的文件转为 stream(流)的形式,再通过 .pipe() 接口对其进行链式加工处理: 或者比如我们通过 http 模块创建一个 HTTP 服务: const http = require('http'); http.createServer( (req, res) => { //... }).listen(3000); 此处的 req 和 res 也属于

很好的iOS学习资料

https://github.com/vsouza/awesome-ios 汇集了很多好的资料 https://github.com/vsouza/awesome-ios Skip to content This repository Pull requests Issues Gist You don’t have any verified emails. We recommend verifying at least one email. Email verification helps ou

[设计模式] Typed Message模式与Event Sourcing

引言 在<设计模式沉思录>(Pattern Hatching: Design Patterns Applied,[美]JohnVlissides著)一书的第4章中,围绕事件Message传递的推-拉模型(Push-Pull),谈到了一个最初被称为Multicast,之后被定型为Typed Message的设计模式. 该模式的初衷是希望得到一个可扩展的.类型安全的事件传递机制,并能符合两点要求: 通过推模型来将事件传递给消费者. 特有的每个事件只需要最多新增一个类,而不需要对已有代码进行修改.

为什么我会选IT【这几年是怎么过来的】

导火线 晚上跟高中同学说我近来的状况,无意中他提到:“如果当初没意外话,今年估计你就是一名老师了吧”.这让我很是怀念以前的日子,这四年来过的很快,开始想着当初是怎么过来的 : 高考 本人英语不佳,高考只能靠理综和数学撑着,那时候刚好上了2A线,纯属于2A尾,不过也罢,人嘛,努力了就好.到了开始填志愿了,那时候我一心想当一名初中或高中教师,很喜欢在讲台上淋漓尽致的感觉,所以在2A档上全部选教师专业,老爸老妈极力反对,叫我不要一根筋,后面还是选了,可惜天不人愿,一个都不中,后面接到一学校打电话来说“