Preference
NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。
1.使用方法
//1.获得NSUserDefaults文件 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //2.向文件中写入内容 [userDefaults setObject:@"AAA" forKey:@"a"]; [userDefaults setBool:YES forKey:@"sex"]; [userDefaults setInteger:21 forKey:@"age"]; //2.1立即同步 [userDefaults synchronize]; //3.读取文件 NSString *name = [userDefaults objectForKey:@"a"]; BOOL sex = [userDefaults boolForKey:@"sex"]; NSInteger age = [userDefaults integerForKey:@"age"]; NSLog(@"%@, %d, %ld", name, sex, age);
2.注意
- 偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。
- 如果没有调用
synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。 - 偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。
保存数据:
-(void)saveSetting { NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; //save string NSString* saveString = @"simon"; [defaults setObject:saveString forKey:@"name"]; //save integer NSInteger saveInt = 100; [defaults setInteger: saveInt forKey:@"count"]; //save bool BOOL saveBool = YES; [defaults setBool: saveBool forKey:@"flag"]; //save image UIImage *image=[[UIImage alloc]initWithContentsOfFile:@"photo.jpg"]; NSData *imageData = UIImageJPEGRepresentation(image, 100);//UIImage对象转换成NSData [defaults setObject:imageData forKey:@"image"]; //用synchronize方法把数据持久化到standardUserDefaults数据库 [defaults synchronize]; }
读取数据:
-(void)getSetting { NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; //根据键值取出name NSString *name = [defaults objectForKey:@"name"]; NSInteger count = [defaults objectForKey:@"count"]; BOOL bflag = [defaults objectForKey:@"flag"]; NSData *imageData = [defaults dataForKey:@"image"]; UIImage *Image = [UIImage imageWithData:imageData];//NSData转换为UIImage }
NSUserDefaults数据存储的位置
NSUserDefaults用于保存iPhone程序的数据,使用非常方便。
那么这些数据最终存放在什么地方呢?存放于一个plist文件中。这个文件位于
<UUID for your App>\Library\Preferences\<your App's bundle ID>.plist
浙公网安备 33010602011771号