• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift3.0之获取设备识别号deviceNo和保存账户AccountId

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  最近在使用最新的Swift3.0重写以前写的一个Objective-C语言编写的众驾租车的app,在重写过程中,遇到了一些问题,但更多的是收获。

  在调用本地接口文档过程中,由于接口参数中频发你使用DeviceNo和AccountId这两个参数,而DeviceNo只获取一次就保存到本地,AccountId在用户登录后拿到也会保存到本地,所以本文主要讲解这两个变量的保存函数。

  本文的DeviceNo和AccountId变量都以String的类型存储,持久化方案采用系统自带的UserDefaults。

 

  首先介绍DeviceNo的获取和保存操作,先看代码:

    static func deviceNo() -> String {
        ///设备识别号存储的key值
        let deviceNoKey = "DeviceNoKey"
        if let deviceNo = UserDefaults.standard.string(forKey: deviceNoKey) {
            return deviceNo
        }
        var deviceNoString: String
        let puuid = CFUUIDCreate(nil);
        let uuidString = CFUUIDCreateString(nil, puuid);
        deviceNoString = CFStringCreateCopy(nil, uuidString!) as String;
        UserDefaults.standard.set(deviceNoString, forKey: deviceNoKey)
        return deviceNoString
    }

  首先检查UserDefaults中有没有相应key值的变量,有就返回,没有就重新生成。

 

  然后是AccountId,由于AccountId比DeviceNo多了一步设置,并且该变量是可读可写的,不像DeviceNo,获取之后就不再修改

 

    static func accountId(setAs accountId: String? = "") -> String? {
        ///账户id存储的key值
        let accountIdKey = "AccountIdKey"
        guard accountId != nil else {  //传入nil
            UserDefaults.standard.removeObject(forKey: accountIdKey)
            return nil
        }
        guard accountId! != ("") else {  //未传参或传入""
            return UserDefaults.standard.string(forKey: accountIdKey)
        }
        UserDefaults.standard.set(accountId!, forKey: accountIdKey)
        return accountId!
    }

 

 

 

   AccountId就相对复杂一点,功能逻辑如下:

  函数有默认值,若不传入参数,则表示直接返回本地存储的key值,本地没有就返回nil;

  若传入非空字符串,则表示将入参存入本地或替换,并返回该值;

  若传入nil,则表示将本地key值移除(若存在),并返回nil。

  需要注意的是,为了代码的可读性,若传入参数,则外部参数名变为setAs,意为将accountId设置为“ ”,调用就变成了这样:TRHttpParam.accountId(setAs: <#T##String?#>)

  经测试证明,可统一使用该函数进行AccountId的设置、存储和移除,对于真实项目来说该函数还是相当好用的。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift-判断应用是否是第一次启动(或当前版本是否第一次启动) ...发布时间:2022-07-13
下一篇:
Swift中的静态方法继承发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap