美文网首页
常量的储存及简单本地化

常量的储存及简单本地化

作者: Frain | 来源:发表于2016-05-30 20:32 被阅读0次

iOS开发中经常会需要一些常量,简单使用 plist 或者 NSUserDefaults
这里分享一下个人在项目中为了保证可读性以及方便而使用的常量类以及简单本地化方法

class ConstantsNumber {
    
    static var clientUserId: Int64 {
        set {
            let id = Int(newValue)
                setContentToDevice(id, key: "clientUserId", type: .userDefaults)
        }
        get {
            guard getContentFromDevice("clientUserId", type: .userDefaults) != nil else {
            return 0
            }
            return Int64(getContentFromDevice("clientUserId", type: .userDefaults) as! Int)
        }
    }
 
    static var clientItemId: Int64 {
        set {
            let id = Int(newValue)
            setContentToDevice(id, key: "clientItemId", type: .userDefaults)
            }
        get {
            guard getContentFromDevice("clientItemId", type: .userDefaults) != nil else {
                setContentToDevice(0, key: "clientItemId", type: .userDefaults)
                return 0
            }
            return Int64(getContentFromDevice("clientItemId", type: .userDefaults) as! Int)
        }
    }
}

这样子使用常量就会非常容易,比如:

let id = Constants.clientItemId

配合下面两个 KyXu 写的的方法使用:

enum StoreType {
 case userDefaults
 case plist
}

func setContentToDevice (content:AnyObject, key:String, type:StoreType) {
    if type == .userDefaults {
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(content, forKey: key)
    }else if type == .plist {
        let pathPrefix = NSSearchPathForDirectoriesInDomains(
            NSSearchPathDirectory.DocumentDirectory,
            NSSearchPathDomainMask.AllDomainsMask, true).first
        let pathSuffix = "/" + key + ".plist"
        if let path = pathPrefix?.stringByAppendingString(pathSuffix) {
            NSKeyedArchiver.archiveRootObject(content, toFile: path)
        }
    }
}

func getContentFromDevice (key:String, type:StoreType) -> AnyObject? {
    var returnObject :AnyObject?
 
    if type == .userDefaults {
        let defaults = NSUserDefaults.standardUserDefaults()
        let content = defaults.objectForKey(key)
        returnObject = content
    }else if type == .plist {
        let pathPrefix = NSSearchPathForDirectoriesInDomains(
            NSSearchPathDirectory.DocumentDirectory,
            NSSearchPathDomainMask.AllDomainsMask, true).first
        let pathSuffix = "/" + key + ".plist"
        if let path = pathPrefix?.stringByAppendingString(pathSuffix) {
            if let content = NSKeyedUnarchiver.unarchiveObjectWithFile(path) {
                returnObject = content
            }
        }
    }
 
    return returnObject
}

相关文章

  • 常量的储存及简单本地化

    iOS开发中经常会需要一些常量,简单使用 plist 或者 NSUserDefaults这里分享一下个人在项目中为...

  • iOS plist 文件管理

    最近在项目中本地化存储的时候用NSUserDefaults来做本地化储存,随着项目越来越大,需要存入的数据也越来越...

  • swift基础语法(常量和变量)

    一、常量和变量 1、声明常量和变量 2、类型标注:在声明一个变量或常量的时候提供类型标注,来明确变量或常量能够储存...

  • Swift基础知识

    1、常量 常量储存的值始终不变,不同于变量,常量一点赋值就不能修改 例:let z = 8 z:Int =...

  • 常量及iota的简单用法

    一,常量 介绍常量是在编译时期创建的,即使当定义在函数内,并且只能是numbers,characters(rune...

  • 将数据储存至MySQL(设置唯一索引去重)

    将数据保存到数据库是数据本地化的重要方式,而且将所获数据存到数据库后续操作会简单的多。 将数据储存到数据库中 下面...

  • Laravel 后台返回本地化错误消息

    前台本地化本地化很简单 @lang('messages.welcome') 这种方式快捷获取本地化消息。那么后台呢...

  • iOS语言本地化

    Brief### iOS实现语言的本地化很简单,这里只是为了简单的记录一下过程。 一、本地化storyboard上...

  • 序列比对

    1.Blast+本地化及使用方法:http://bioinformation.cn/?cat=5 2.如何本地化进...

  • 指向常量的指针和常量指针

    1,常量指针 long *const pvalue =&value;//可以使指针中储存的地址不能改变。 。 2,...

网友评论

      本文标题:常量的储存及简单本地化

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