NSUserDefault

     //******************** 5.1 NSUserDefault和对象归档
     func useNSUserDefault()
     {
         //通过单利来创建一个NSUserDefaults对象,全局变量NSUserDefault,可在整个项目传递变量
         var userDefault:NSUserDefaults = NSUserDefaults.standardUserDefaults()

         //通过init方法创建
         var userDefault1:NSUserDefaults = NSUserDefaults(suiteName: "SwiftClass")!

         //获取userDefault单利下所有的值
         println(userDefault.dictionaryRepresentation())

         //判断NSUserDefaults的“appMessage”key 在dictionaryRepresentation中是否存在,如果不存在就设置“appMessage”值为This is app message。
         if(userDefault.objectForKey("message") == nil){
             userDefault.setObject("This_is_my_default_message", forKey: "message")
         }

         //如果想单独看某个key的设置,例如:
         var dic = userDefault.dictionaryRepresentation()
         var object_one:AnyObject? = (dic as NSDictionary).objectForKey("AppleKeyboards")
 //        //或者
 //        var object_one:AnyObject?  = dic["AppleKeyboards"]

         if let oValue: AnyObject! = object_one {
             println(oValue)
         }

         //Int类型
         //设置
         userDefault.setInteger(, forKey: "Int")
         //读取
         var intValue = userDefault.integerForKey("Int")
         println(intValue)

         //Float类型
         //设置
         userDefault.setFloat(3.2, forKey: "Float")
         //读取
         var floatValue = userDefault.floatForKey("Float")
         println(floatValue)

         //Double类
         //设置
         userDefault.setDouble(5.6890, forKey: "Double")
         //读取
         var doubleValue = userDefault.doubleForKey("Double")
         println(doubleValue)

         //Bool类型
         //设置
         userDefault.setBool(true, forKey: "Bool")
         //读取
         var boolValue = userDefault.boolForKey("Bool")
         println(boolValue)

         //NSURL类型
         //设置
         userDefault.setURL(NSURL(string: "http://www.iphonetrain.com")!, forKey: "NSURL")
         //读取
         var urlValue = userDefault.URLForKey("NSURL")
         println(urlValue)

         //保存NSDate数据
         //将对象转换成NSData流
         var imageData:NSData = NSKeyedArchiver.archivedDataWithRootObject(UIImage(named: "SwiftClassWeiXin.png")!)

         //存储NSData对象
         userDefault.setObject(imageData, forKey: "imageData")

         //读取数据
         //获取NSData
         var objData:AnyObject? = userDefault.objectForKey("imageData")

         //还原对象
 //        var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as NSData)

         //2015年5月2号修改
         var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as! NSData)

         //初始一个UIImage对象
         println(myImage)

         //自定义的类实现存取需要通过NSData做载体

         //创建AppsModel的实例
        var model = AppsModel(imageName: "appIcon2.png", app_Name: "租房点评", app_Description: "租房被骗?现在开始,你来改变这一切!《租房点评》为你而备,租房无忧!")

         //实例对象转换成NSData
         var modelData:NSData = NSKeyedArchiver.archivedDataWithRootObject(model)

         //存储NSData对象
         userDefault.setObject(modelData, forKey: "myAppModel")

         //保存NSString,
         userDefault.setValue("1_NSString", forKey: "NSString")
         userDefault.setObject("1_NSString1", forKey: "NSString1")

         //保存NSNumber,
         var number:NSNumber = NSNumber()
         userDefault.setValue(number, forKey: "number")
         userDefault.setObject(number, forKey: "number1")

         //保存NSArray
         var array1:NSArray = NSArray(array:["])
         userDefault.setValue(array1, forKey: "array")
         userDefault.setObject(array1, forKey: "array1")

         //保存NSDictionary
         var dictionary:NSDictionary = NSDictionary(dictionary: ["])
         userDefault.setValue(dictionary, forKey: "dictionary")
         userDefault.setObject(dictionary, forKey: "dictionary1")

         var value:AnyObject? = userDefault.valueForKey("dictionary")
         println(value)

         value = userDefault.objectForKey("dictionary1")
         println(value)

         //-------- 删除所有的值
         var ar:NSDictionary = userDefault.dictionaryRepresentation()

         for key in ar.allKeys {

 //            userDefault.removeObjectForKey(key as String)

             //2015年5月2号修改
             userDefault.removeObjectForKey(key as! String)

             userDefault.synchronize()
         }
     }
     @IBOutlet weak var textField: UITextField!
     @IBAction func btnSave(sender: UIButton) {
         var text = textField.text
         userDefault.setObject(text, forKey: "textField")
         userDefault.synchronize()//强制持久化数据
     }

     @IBAction func btnLoad(sender: UIButton) {
 //        userDefault.arrayForKey(<#defaultName: String#>)
 //        var text = userDefault.dataForKey("textField")
         var text = userDefault.stringForKey("textField")
         textField.text = text
     }

     override func viewDidLoad() {
         super.viewDidLoad()
         /**
         创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:
         */

         println(userDefault)
 //        println(defaults)
         /**
         创建一个user defaults方法有多个,最简单得快速创建方法:
         NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

         添加数据到 user defaults:
         [accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];
         也可以添加基本数据类型int, float, bool等,有相应得方法

         [accountDefaults setBool:YES forKey:UserDefaultBoolKey];

         从user defaults中获取数据:

         [accountDefaults objectForKey:NCUserDefaultNameKey]

         [accountDefaults boolForKey: UserDefaultBoolKey];

         要点: NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。
         针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
         */

     }
 
 
 
 

iOS开发——数据持久化Swift篇&(一)NSUserDefault的更多相关文章

  1. iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储

    使用Core Data进行数据持久化存储   一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...

  2. iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)

    文件目录路径获取(Home目录,文档目录,缓存目录等)   iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录:   1,Home ...

  3. iOS开发——数据持久化Swift篇&iCloud云存储

    iCloud云存储 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super. ...

  4. iOS开发——数据持久化Swift篇&(四)CoreData

    CoreData import CoreData class ViewController: UIViewController { override func viewDidLoad() { supe ...

  5. iOS开发——数据持久化Swift篇&(三)SQLite3

    SQLite3 使用 //******************** 5.3 SQLite3存储和读取数据 func use_SQLite3() { //声明一个Documents下的路径 var db ...

  6. iOS开发——数据持久化Swift篇&(二)沙盒文件

    沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...

  7. iOS开发——数据持久化Swift篇&通用文件存储

    通用文件存储 import UIKit class ViewController: UIViewController { @IBOutlet weak var textField: UITextFie ...

  8. iOS开发——数据持久化Swift篇&SettingBundle

    SettingBundle import UIKit class ViewController: UIViewController { var userDefault = NSUserDefaults ...

  9. iOS开发——数据持久化Swift篇&模型对象归档

    模型对象归档 import UIKit class ViewController: UIViewController { @IBOutlet weak var textField: UITextFie ...

随机推荐

  1. Monitor traffic to localhost from IE or .NET

    原文:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/MonitorLocalTraffic Monitor traffic to lo ...

  2. Scrum之Sprint物件

    产品订单(Product Backlog) 一个需求的列表. 一般情况使用用户故事来表示backlog条目 理想情况每个需求项都对产品的客户或用户有价值 Backlog条目按照商业价值排列优先级 优先 ...

  3. public static void main(String arg[])

      该语句定义了main方法. main方法是程序执行的入口,所有的java程序都必须具备一个main()方法,而且必须按照如上的格式来定义. 不具有main方法的类可以编译,但不能执行.因为它没有m ...

  4. mysql 语句碎片

    1. find_in_set('''$ip''',CONCAT('''', REPLACE( REPLACE(w_ip,',',''',''') ,'-',''',''') 2. grant all ...

  5. 在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。

    原因就是 这个程序集中没有引用EntityFramework.可以使用Nuget 安装EntityFramewok.

  6. C++11初始化列表

    [C++11之初始化列表] 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过 ...

  7. <<海闻电子发票接口 ESB 封装 代码指示 文档>>

    <<海闻电子发票接口 ESB 封装 代码指示 文档>> isValid 是否有效标志 代码 中文 说明 true 成功 false 失败   code 海闻错误说明 代码 中文 ...

  8. spring 的properties解析

    一般使用PropertyPlaceholderConfigurer来替换占位符,例如: <bean class="org.springframework.beans.factory.c ...

  9. 使用aspose.word两句代码将word转换为pdf

    //Load Document Document document = new Document(@"C:\Users\Administrator\Desktop\人事---新员工转正总结( ...

  10. ]用EnumChildWindows遍历窗口的方法

    最近项目有需要,得到一个非自己实现的窗口控件对象.于是想起曾经做过类似功能.总结如下: 调用EnumChildWindows(this->m_hWnd, EnumChildProc, NULL) ...