Swift学习之UserDefaults

来源:互联网 发布:cnzz数据专家 编辑:程序博客网 时间:2024/06/16 19:08

之前我在用UserDefaults的使用,经常使用

UserDefaults.standard.set("姓名",forKey:"name")

printf(UserDefaults.standard.value(forKey:"name"))

用这种方法就算是写成全局变量或者写成一个方法,虽然解决了重用的问题,但是在体验还是不友好。为了向系统靠近,我学习了下面的一个方法来存储和使用。

1.首先我们先写一个UserDefaults的一个扩展,同时里面声明一个枚举

extension UserDefaults {
    enum UserModel: String,UserDefaultSettable {
        case name
    }
}

UserDefaultSettable该协议需要我们自己去声明实现,我们下来实现该协议

protocol UserDefaultSettable {

var uniqueKey : String{get}

}

同时还有该协议的扩展

extensionUserDefaultSettable whereSelf:RawRepresentable,Self.RawValue == String {

    

   internal var uniqueKey:String {

       return "\(Self.self).\(rawValue)"

    }

    

   func store(value:Any?) {

       UserDefaults.standard.set(value

            , forKey:uniqueKey)

    }

    

   internal var storeValue:Any? {

       return UserDefaults.standard.value(forKey:uniqueKey)

    }

}

到此,我们可以去我们要存储的地方使用

UserDefaults.UserModel.name.store(value:"姓名")

UserDefaults.UserModel.name.storeValue来使用我们存起来的数据

其中

func store(value:Any?) {

        UserDefaults.standard.set(value

            , forKey: uniqueKey)

    }

    

    internal var storeValue:Any? {

        return UserDefaults.standard.value(forKey:uniqueKey)

    }

这两个东西我们可以模仿官方的把Any改成其他类型的。

最后附上Demo下载地址 http://download.csdn.net/detail/a174455171/9856392




 

原创粉丝点击