您的位置:首页 > 移动开发 > IOS开发

ios开发之---将数据写入和读取与沙盒的具体理解和实现。

2015-08-06 13:08 549 查看
一、将Documents文件夹下文件的写入和读取

A:文件的存储:

// 1、获取“沙盒”路径 (文件夹路径)

// 方法的意思:SearchPath 搜索路径。ForDirectories 哪个文件夹 InDomains 在哪个范围。 合起来就是:搜索在指定范围内的哪个文件夹路径。

// 三个参数的意思:1、哪个文件夹。2、指定的搜索范围。3、是否展开路径。

// 返回值是一个数组。

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

// 2、根据文件名,拼接文件路径。

NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];

// 3、将数据写入到指定的文件路径下的文件里面。

NSArray *arr = @[@"1",@"2"];

[arr writeToFile:filePath atomically:YES];

B:文件的读取:以什么方式存,就以什么方式读。

// 1、获取“沙盒”路径 (文件夹路径)

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

// 2、根据文件名,拼接文件路径。

NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];

NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];

二、偏好设置存储:(NSUserDefaults)的存储和读取

A:存储:

特点:1、不需要关心文件件。2、NSUserDefaults专门用来做偏好设置存储。3、底层是封装了一个字典。

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

[userDefault setObject:@"fs" forKey:@"name"];

[userDefault setObject:@"24" forKey:@"age"];

// 同步,把缓存里的偏好设置文件写入硬盘。ios8之前必须要同步。ios8以后可写,可不写

[userDefault synchronize];

B:读取:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

NSString *name = [userDefault objectForKey:@"name"];

NSString *age = [userDefault objectForKey:@"age"];

通过以上代码就可获取到保存到偏好设置里的信息。

三、自定义对象归档、解档

因为自定义对象,不能用plist存储,也不能用偏好设置,所以自定义对象,一般是用归档来存储。比如:用户信息:userInfo.一般是归档。

1、自定义对象要遵守 <NSCoding> 协议。

2、在自定义对象的.m文件中,实现协议方法。

// 自定义对象 归档

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.name forKey:@"name"];

[aCoder encodeObject:self.pwd forKey:@"pwd"];

}

// 自定义对相 解档

- (id)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init]) {

self.name = [aDecoder decodeObjectForKey:@"name"];

self.pwd = [aDecoder decodeObjectForKey:@"pwd"];

}

return self;

}

3、实现归档

// 1、获取文件夹路径。

NSString *tmpDir = NSTemporaryDirectory();

// 2、拼接文件路径

NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];

// 3、给模型属性赋值。

Account *account = [[Account alloc] init];

account.name = @"张三";

account.pwd = @"123";

// 4、实现自定义对象归档

[NSKeyedArchiver archiveRootObject:account toFile:filePath];

4、实现解档。

// 1、获取文件夹路径。

NSString *tmpDir = NSTemporaryDirectory();

// 2、拼接文件路径

NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];

// 3、解档。

Account *account = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: