首页 > 其他 > 详细

iOS:NSUserDefaults

时间:2014-02-25 21:04:29      阅读:328      评论:0      收藏:0      [点我收藏+]
  

什么是NSUserDefaults?

NSUserDefaults类用于保存应用程序设置和属性以及用户数据等轻量级数据。例如,你可以存储用户在应用程序中使用的图片或默认颜色方案。这些对象存储在iOS所谓的“defaults系统”中。iOS的defaults系统在整个app中都是可用的,因此存放到defaults系统中的数据也是整个应用程序生命周期中可用的。也就是说,无论用户关闭程序还是关机,在用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:

  • NSData
  • NSString
  • NSNumber
  • NSDate
  • NSArray
  • NSDictionary

如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。注意:密码最好不要存储在NSUserDefaults里,要存储也必须用AES/DES加密存储,更安全的方法是 https://github.com/ldandersen/scifihifi-iphone

把密码存储在NSUserDefault or plist里的后果: http://www.shushao.com/news/info/item/203510-ios

用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?

其实它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。
比如说这个是你的程序沙盒位置
/UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults,需要注意的是如果程序意外退出,NSUserDefaults standardUserDefaults数据不会被系统写入到该文件,不过可以使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,来避免数据的丢失。
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。

代码实现:

//将文本框的内容保存到NSUserDefaults

    NSUserDefaults *savePtb = [NSUserDefaultsstandardUserDefaults];

    [savePtbsetObject:self.textField.textforKey:@"input"];



//读取NSUserDefaults中的数据

    NSUserDefaults *readPtb = [NSUserDefaultsstandardUserDefaults];

   NSString *pstr = [readPtb objectForKey:@"input"];


    有时候,我们需要在应用程序第一次打开时做一些事情,可以用NSUserDefaults来判断应用程序是否第一次执行,

可以在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法利进行判断:


    

    NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];

   NSNumber *number = [userDF objectForKey:@"H"];


            

    if(number ==nil)//程序第一次执行


    {

        NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];

        [userDF setValue:[NSNumbernumberWithBool:YES]forKey:@"H"];

        [userDFsynchronize];

        要执行的其他代码;

   }

   

   else//程序不是第一次执行

    {

        其他代码;
                }

iOS:NSUserDefaults

原文:http://blog.csdn.net/u012890196/article/details/19837655

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!