pList文件特点:
//1. 以列表的方式存储数据的文件
//2. pList不能存储基本数据类型,只能存类类型
//3. 读写方式只能为数组或字典
//4. 以数组的方式写入,则以数组方式读;
以字典方式写,则以字典的方式读。
一,数据写入
写入pList文件的两种方式:手动写入&调方法写入
1,手动写入
新建一个plist文件手动写入数据
2,调用方法写入
注意,这里如果要存储基本数据类型,需要用 NSNumber类对其进行封装
//NSNumber 数字类 存储数字的一个类
//初始化NSNumber对象: 类方法、对象方法
//可将int、float、double、char等类型变量转NSNumber对象类型
int a = 12;
NSNumber *numA = [NSNumber numberWithInt:a];
NSNumber *numB = @5; //直接初始化NSNumber对象
NSArray *array = @[@"aa",numA,numB,@"bb"];
先创建一个plist文件
//Library
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*path=[pathsobjectAtIndex:0];
//然后拼接完整的路径
NSString *pathNew = [path stringByAppendingString:@"/write.plist"];
NSFileManager *file1 = [NSFileManager defaultManager];
//判断文件是否存在
BOOL bval = [file1 fileExistsAtPath:pathNew];
//如果返回值为YES,则文件存在,否则文件不存在,则创建
if(bval){
NSLog(@"文件已存在");
}else{
//参数1:文件路径 参数2:文件内容 nil 参数3:属性信息 nil
bval = [file1 createFileAtPath:pathNew contents:nil attributes:nil];
if(bval){ //返回值为YES,说明创建文件成功,否则失败
NSLog(@"创建文件成功");
}else{
NSLog(@"创建文件失败");
}
}
//将数组写入到plist文件
if([array writeToFile: pathNew atomically:YES]){
NSLog(@"写入plist成功");
}else{
NSLog(@"写入失败");
}
现在我们读取plist文件,看看LG.SandBox.plist中都存储了哪些数据
3,读取plist文件内容
//1. 通过数组方式获取plist文件数据
NSArray *arr2 = [NSArray arrayWithContentsOfFile: pathNew];
//2.通过字典方式获取plist文件数据
NSDictionary *dic2 = [NSDictionary dictionaryWithContentsOfFile: pathNew];
//因为prePath路径下的plist是以数组方式写入,所以只能通过数组读取
NSLog(@"arr2 = %@,dic2=%@",arr2,dic2);
4,有意思的一个地方
现在我在上述代码的基础上,在向plist文件中存储一个字典
NSDictionary *dic = @{@"1":@"0"};
读取plist文件内容,你会发现,此时只存在一个字典,而原来的数组不见了。
别急,我们再来存一个字典
NSDictionary *dic = @{@"1":array};
网友评论