zoukankan      html  css  js  c++  java
  • NSUserDefaults的简单介绍

            NSUserDefaults应该是所有的ios数据存储方式中,最简单,最灵活的永久性数据存储方式,也是我们用的最多的一种方式。它主要用来存储我们程序中的一些偏好设置。

            NSUserDefaults是一种单例模式,所以它本身是线程安全的。

            它是通过plist方式来存储的,NSUserDefaults将其数据存储在应用程序内置的一个plist文件内,存储的数据类型主要有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL。你可以通过打开沙盒路径,在library文件夹下的prefer文件夹下看到。

            它的存储方式基于kvc模式,也就是键值编码方式,通过value和key方式来存储数据。

      NSUserDefaults需要存储数据时,通过以下方式来设置

              NSString *passWord = @"moxue";
              NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
              [user setObject:passWord forKey:@"userPassWord"];

      当需要使用的时候,只需要简单的取出数据即可:

     NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
        NSString *passWord = [ user objectForKey:@"userPassWord"];
    NSUserDefaults的同步方式:
     [userDefaults synchronize];

    需要注意的是NSUserDefaults存储的数据全都是不可变的,也就是说它只能存储:NSArray,NSDictionary,却不能存储NSMutableArray, NSMutableDictionary类型数据,否则程序调试会出现问题。

    注意:错误的赋值方法

    这样写后,mutableArray 就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现bug
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
             NSMutableArray *mutableArray = [user objectForKey:@"墨雪"];
    正确的赋值方法,也可以用alloc方式初始化
        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
             NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:[user objectForKey:@"墨雪"]];
  • 相关阅读:
    HTML---网页编程(2)
    HTML---网页编程(1)
    HDOJ/HDU 1297 Children’s Queue(推导~大数)
    HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)
    HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
    洛谷P1314 [NOIP2011提高组Day2T2] 聪明的质监员
    洛谷P1313 [NOIP2011提高组Day2T1]计算系数
    POJ3696 The Luckiest number
    洛谷P1312 [NOIP2011提高组Day1T3]Mayan游戏
    洛谷P1311 [NOIP2011提高组Day1T2]选择客栈
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4919081.html
Copyright © 2011-2022 走看看