- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor lightGrayColor];
// 创建字符串持久化按钮
self.buttonString=[[UIButton alloc]initWithFrame:CGRectMake(100, 50, 200, 50)];
[self.buttonString setTitle:@"字符串持久化" forState:UIControlStateNormal];
self.buttonString.backgroundColor=[UIColor greenColor];
// 方法调用
[self.buttonString addTarget:self action:@selector(dataPersistence) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.buttonString];
}
//数据持久化
-(void)dataPersistence
{
// 字符串持久化
//获取Documents文件目录:常量NSDocumentDirectory表明我们正在查找Documents目录的路径。第二个常量NSUserDomainMask表明我们希望将搜索限制在应用的沙盒内,在OS X中表明我们希望该函数查看用户的主目录。
NSArray *arrayStr=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//表示将文件放入Documents文件的最后一个,即path作为最后一个对象
NSString *path=[arrayStr lastObject];
//@"ANewFile.plist"为新文件名,方法调用后 ,newPathStr 中存放了文件 ANewFile.plist 在 Documents 目录中的完整路径
NSString *newPathStr=[path stringByAppendingPathComponent:@"ANewFile.plist"];
NSLog(@"%@",newPathStr);
//先创建一个NSString(字符串)类型的对象,然后调用实例方法 writeToFile:atomically 将参数写入文件中
NSString *myFile=@"NewString";
[myFile writeToFile:newPathStr atomically:YES encoding:NSUTF8StringEncoding error:nil];
// 说明:这里的atomically参数让该方法将数据写入辅助文件,而不是写入指定位置。成功写入该文件之后,辅助文件将被复制到第一个参数指定的位置。这是更安全的写入文件的方法,因为如果应用在保存期间崩溃,则现有文件(如果有)不会被破坏。尽管增加一点开销,但是多数情况下还是值得的。
// 说明:这里的myFile 是字符串,所以是字符串的持久化,他可以用Array,Dictionary,Data等可以被序列化的类型;可以被序列化的类型有:
1)NSArray、NSMutableArray
2)NSDictionary、NSMutableDictionary
3)NSData、NSMutableData
4)NSString、NSMutableString
5)NSNumber
6)NSDate
//获取几种沙盒目录的方法
//获取Documents目录
NSArray *arrayStr=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path=[arrayStr lastObject];
//获取Library目录方法
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = paths[0];
//获取tmp目录方法
NSString *tempPath = NSTemporaryDirectory();
NSString *filename = [tempPath stringByAppendingPathComponent:@"theFile.txt"];