美文网首页
RCUserDefaults--用属性的方式存取数据

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

作者: 小凉介 | 来源:发表于2019-03-26 15:05 被阅读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。

    相关文章

      网友评论

          本文标题:RCUserDefaults--用属性的方式存取数据

          本文链接:https://www.haomeiwen.com/subject/icggvqtx.html