iOS开发——数据持久化Swift篇&(一)NSUserDefault

NSUserDefault

 

  1     

  2     //******************** 5.1 NSUserDefault和对象归档

  3     func useNSUserDefault()

  4     {

  5         //通过单利来创建一个NSUserDefaults对象,全局变量NSUserDefault,可在整个项目传递变量

  6         var userDefault:NSUserDefaults = NSUserDefaults.standardUserDefaults()

  7 

  8         //通过init方法创建

  9         var userDefault1:NSUserDefaults = NSUserDefaults(suiteName: "SwiftClass")!

 10         

 11         //获取userDefault单利下所有的值

 12         println(userDefault.dictionaryRepresentation())

 13         

 14         //判断NSUserDefaults的“appMessage”key 在dictionaryRepresentation中是否存在,如果不存在就设置“appMessage”值为This is app message。

 15         if(userDefault.objectForKey("message") == nil){

 16             userDefault.setObject("This_is_my_default_message", forKey: "message")

 17         }

 18         

 19         //如果想单独看某个key的设置,例如:

 20         var dic = userDefault.dictionaryRepresentation()

 21         var object_one:AnyObject? = (dic as NSDictionary).objectForKey("AppleKeyboards")

 22 //        //或者

 23 //        var object_one:AnyObject?  = dic["AppleKeyboards"]

 24         

 25         if let oValue: AnyObject! = object_one {

 26             println(oValue)

 27         }

 28         

 29         

 30         //Int类型

 31         //设置

 32         userDefault.setInteger(123456, forKey: "Int")

 33         //读取

 34         var intValue = userDefault.integerForKey("Int")

 35         println(intValue)

 36         

 37         //Float类型

 38         //设置

 39         userDefault.setFloat(3.2, forKey: "Float")

 40         //读取

 41         var floatValue = userDefault.floatForKey("Float")

 42         println(floatValue)

 43         

 44         //Double类

 45         //设置

 46         userDefault.setDouble(5.6890, forKey: "Double")

 47         //读取

 48         var doubleValue = userDefault.doubleForKey("Double")

 49         println(doubleValue)

 50         

 51         //Bool类型

 52         //设置

 53         userDefault.setBool(true, forKey: "Bool")

 54         //读取

 55         var boolValue = userDefault.boolForKey("Bool")

 56         println(boolValue)

 57         

 58         //NSURL类型

 59         //设置

 60         userDefault.setURL(NSURL(string: "http://www.iphonetrain.com")!, forKey: "NSURL")

 61         //读取

 62         var urlValue = userDefault.URLForKey("NSURL")

 63         println(urlValue)

 64         

 65    

 66         

 67         //保存NSDate数据

 68         //将对象转换成NSData流

 69         var imageData:NSData = NSKeyedArchiver.archivedDataWithRootObject(UIImage(named: "SwiftClassWeiXin.png")!)

 70         

 71         //存储NSData对象

 72         userDefault.setObject(imageData, forKey: "imageData")

 73         

 74         //读取数据

 75         //获取NSData

 76         var objData:AnyObject? = userDefault.objectForKey("imageData")

 77         

 78         //还原对象

 79 //        var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as NSData)

 80         

 81         

 82         //2015年5月2号修改

 83         var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as! NSData)

 84         

 85         

 86         

 87         //初始一个UIImage对象

 88         println(myImage)

 89         

 90         

 91         

 92         

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

 94         

 95         //创建AppsModel的实例

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

 97         

 98         //实例对象转换成NSData

 99         var modelData:NSData = NSKeyedArchiver.archivedDataWithRootObject(model)

100         

101         //存储NSData对象

102         userDefault.setObject(modelData, forKey: "myAppModel")

103         

104         

105         

106         

107         

108         

109         

110         

111         //保存NSString, 

112         userDefault.setValue("1_NSString", forKey: "NSString")

113         userDefault.setObject("1_NSString1", forKey: "NSString1")

114         

115         //保存NSNumber, 

116         var number:NSNumber = NSNumber(int: 32)

117         userDefault.setValue(number, forKey: "number")

118         userDefault.setObject(number, forKey: "number1")

119 

120         //保存NSArray

121         var array1:NSArray = NSArray(array:["22222","33333"])

122         userDefault.setValue(array1, forKey: "array")

123         userDefault.setObject(array1, forKey: "array1")

124 

125         //保存NSDictionary

126         var dictionary:NSDictionary = NSDictionary(dictionary: ["1":"1111"])

127         userDefault.setValue(dictionary, forKey: "dictionary")

128         userDefault.setObject(dictionary, forKey: "dictionary1")

129         

130         

131         

132         

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

134         println(value)

135         

136         value = userDefault.objectForKey("dictionary1")

137         println(value)

138 

139         

140         

141         //-------- 删除所有的值

142         var ar:NSDictionary = userDefault.dictionaryRepresentation()

143         

144         for key in ar.allKeys {

145             

146 //            userDefault.removeObjectForKey(key as String)

147             

148             //2015年5月2号修改

149             userDefault.removeObjectForKey(key as! String)

150             

151             userDefault.synchronize()

152         }

153     }

 

 1     @IBOutlet weak var textField: UITextField!

 2     @IBAction func btnSave(sender: UIButton) {

 3         var text = textField.text

 4         userDefault.setObject(text, forKey: "textField")

 5         userDefault.synchronize()//强制持久化数据

 6     }

 7     

 8     @IBAction func btnLoad(sender: UIButton) {

 9 //        userDefault.arrayForKey(<#defaultName: String#>)

10 //        var text = userDefault.dataForKey("textField")

11         var text = userDefault.stringForKey("textField")

12         textField.text = text

13     }

14     

15     override func viewDidLoad() {

16         super.viewDidLoad()

17         /**

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

19         */

20         

21         println(userDefault)

22 //        println(defaults)

23         /**

24         创建一个user defaults方法有多个,最简单得快速创建方法:

25         NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

26         

27         添加数据到 user defaults:

28         [accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];

29         也可以添加基本数据类型int, float, bool等,有相应得方法

30         

31         [accountDefaults setBool:YES forKey:UserDefaultBoolKey];

32         

33         从user defaults中获取数据:

34         

35         [accountDefaults objectForKey:NCUserDefaultNameKey]

36         

37         

38         [accountDefaults boolForKey: UserDefaultBoolKey];

39         

40         要点: NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。

41         针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。

42         */

43         

44         

45         

46     }

 

 
 
 
 

你可能感兴趣的:(swift)