10.18 - NSUserDefault数据存储类的使用

//NSUserDefault​

- (void)nsUserDefault

{

    //ios下可以使用NSUserDefaultssqliteCoreData几种常用的方式来存储数据;其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用于存储大批量和比较复杂的数据。NSUserDefaults的用法如下:

//一、创建NSUserDefaults对象

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

   

//二、创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSStringNSNumberNSDataNSArrayNSDictionaryBOOLNSIntegerfloatdoubleNSURL等基本数据类型和属性列表类型的对象;如果要存储自定义的类对象,则必须将其转换成NSData存储;

   

    //1.属性列表对象都用setObject: forKey: 来存储,对于NSArrayNSDictionary,要求其包含的对象也必须是属性列表类型的,属性列表类型有6种:NSStringNSNumberNSDataNSArrayNSDateNSDictionary

    NSArray *arr = @[@"arr1", @"arr2"];

    [userDefault setObject:arr forKey:@"arrItem"];

    //2.存储基本数据类型的数据,有相应的方法,但是这些方法都会先将基本数据类型转换成NSNumber类型,再进行存储。

    [userDefault setBool:YES forKey:@"bool"];

    [userDefault setInteger:1 forKey:@"integer"];

    [userDefault setFloat:0.5f forKey:@"float"];

    //3.存储NSURL对象类型也有相应的方法,但是该方法的实现中都会先利用[NSKeyedArchiver archivedDataWithRootObject: ]NSURL类型转换为NSData类型。再进行存储。

    NSURL *url = [NSURL URLWithString:@"www.baidu.com"];

    [userDefault setURL:url forKey:@"url"];

   

    //4.存储自定义的类对象,通过setObject: foeKey: 方法。前提是需要先转换为NSData对象。即先让该对象采用NSCoding协议,重写该协议中的方法,再利用[NSKeyedArchiver archivedDataWithRootObject: ]转换为NSData类型。

   

//三、读写NSUserDefaults中的数据

    //1.读取基本数据类型数据

    BOOL b = [userDefault boolForKey:@"bool"];

    NSLog(@"bool : %d", b);

    //2.读取对象类型数据

    id obj = [userDefault objectForKey:@"arrItem"];

   

    //3.读取数组,字典,字符串,NSDataNSURL类型的数据有直接的方法

    NSArray *array = [userDefault arrayForKey:@"arrItem"];

    NSLog(@"%@", array);

    // - dictionaryForKey:

    // - dataForKey:

    // - stringForKey:

    // - URLForKey:

   

//四、删除某个数据项,使用removeObjectFoeKey

    [userDefault removeObjectForKey:@"arrItem"];

   

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

    [userDefault synchronize];

   

//六、运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,如果是在模拟器上运行程序,可以在Mac/Users/YOUR-USERNAME/Library/Developer/CoreSimulator/Devices/YOUR-APP-DIR/data/Library/Preferences目录下面找到一个文件名为YOUR-Bundle_Identifier.plistplist文件,用Xcode打开该文件,可以看到刚才写入的数据。

   

}

posted @ 2014-10-19 22:56  _蚕豆_  阅读(223)  评论(0)    收藏  举报