RCUserDefaults--用属性的方式存取数据

2019-03-26  本文已影响0人  小凉介

Overview

使用过UserDefault的都知道存取数据是像下面这样的:

UserDefaults.standard.set(1, forKey: "test")

UserDefaults.standard.value(forKey: "test")

这样一来接口看起来不够简洁,二来需要维护一堆Key,受到GVUserDefaults的启发,直接用属性的方式来获取存取数据,我用Swift实现了RCUserDefaults

Usage

通过给RCUserDefaults extension一些自己需要的属性,需要注意的这些属性需要用@NSManaged修饰

extension RCUserDefaults {

    @NSManaged var string: String
    @NSManaged var stringOptional: String?

    @NSManaged var bool: Bool

    @NSManaged var int: Int

    @NSManaged var double: Double

    @NSManaged var float: Float

    @NSManaged var data: Data
    @NSManaged var dataOptional: Data?

    @NSManaged var any: Any
    @NSManaged var anyOptional: Any?

    @NSManaged var array: [Int]
    @NSManaged var arrayOptional: [Int]?

    @NSManaged var dictionary: [String: Int]
    @NSManaged var dictionaryOptional: [String: Int]?

}

可以像这样存数据

RCUserDefaults.standard.string = "string"

RCUserDefaults.standard.bool = true

RCUserDefaults.standard.int = 1

RCUserDefaults.standard.double = 1

RCUserDefaults.standard.float = 1.0

RCUserDefaults.standard.array = [1]

RCUserDefaults.standard.dictionary = ["test": 1]

像这样取数据

let string = RCUserDefaults.standard.string // "string"
let bool = RCUserDefaults.standard.bool // true
let int = RCUserDefaults.standard.int // 1
let double = RCUserDefaults.standard.double // 1
let float = RCUserDefaults.standard.float // 1.0
let array = RCUserDefaults.standard.array // [1]
let dictionary = RCUserDefaults.standard.dictionary // ["test": 1]

Performance

性能的话完全不用担心,几乎跟UserDefaults一模一样。

最后如果大家觉得不错的话,可以点个Star支持一下,QAQ。

上一篇下一篇

猜你喜欢

热点阅读