NSUserDefaults的一些基本用法

本文介绍iOS开发中NSUserDefaults的用途及使用方法,包括基本数据类型的存储、自定义对象的存储方式及注意事项,如如何将自定义对象转换为NSData进行存储。同时讲解了数据同步机制和数据覆盖更新等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 1.用处:NSUserDefaults用来存储类似用户的配置、程序设置信息等这些的数据

    iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。

    NSUserDefault 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。

    2.用法:

    NSUserDefault的使用比较简单:

    A类页面:

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    [userDefault setObject:@“北京” forKey:LASTCITY];

    [userDefault synchronize];

    B类页面:

     

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    NSString *lastCity = [userDefault objectForKey:LASTCITY];

    3.细节用法:

     

    如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:

     

    1. NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]
    2. [mySettingData setObject:arr forKey:@"arrItem"];
    3. [mySettingData setObject:@"admin" forKey:@"user_name"];
    4. [mySettingData setBOOL:@YES forKey:@"auto_login"];
    5. [mySettingData setInteger:1 forKey:@"count"];
      往NSUserDefaults添加数据后,它们就变成了全局的变量,App中即可读写NSUserDefault中的数据:

       

       

      1. NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
      2. NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);
      3. NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);
      4. NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);

        如果想删除某个数据项,可以使用removeObjectForKey删除数据:

         

        1. [mySettingData removeObjectForKey:@"arrItem"];

           

          需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:

           

          1. [mySettingData synchronize]; 运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,如果是在模拟器上运行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目录下面找到一个文件名为YOUR-Bundle_Identifier.plist的plist文件,用Xcode打开该文件,可以看到刚才写入的数据。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值