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

ios 几种数据存储方式

2016-04-13 15:56 477 查看
<span style="font-size:18px;">#import "ViewController.h"
#import "Person.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
}

/**
*  沙盒
*/
- (void)test
{

// 获取Caches路径
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
//stringByAppendingPathComponent不需要添加 /
NSString *filePath = [docPath stringByAppendingPathComponent:@"Data"];
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:filePath]) {
// 创建文件夹(此处是Data 文件夹)
[manager createDirectoryAtPath:filePath
withIntermediateDirectories:YES
attributes:nil
error:nil];
}

// 在Data文件夹下创建test.plist文件
NSString *dataPath = [filePath stringByAppendingString:@"/test.plist"];
NSArray *arr = @[@"1",@"2"];
[arr writeToFile:dataPath atomically:YES];
NSLog(@"%@",dataPath);

// 遍历子文件
//  NSArray *files = [manager subpathsOfDirectoryAtPath:filePath error:nil];
//  NSLog(@"%@",files);

//  if ([manager fileExistsAtPath:filePath]) {
//    [manager removeItemAtPath:filePath error:nil]; // 删除该目录下的文件夹
//  }
// 一般在下载图片或者文件时用的比较多
}

/**
*  NSUserDefaults 一种轻量级的永久存储方式
NSUserDefaults支持的数据类型:NSNumber(NSInter,float,double),NSString,NSDate,NSArray,NSDictionary,BOOL
对于相同的key赋值,相当于一次覆盖,必须保证每一个key的唯一性

NSUserDefaults存储的对象全是不可变的(这一点非常关键,否则程序会崩溃的)
*/

- (void)test1
{
// 这种方式的存储路径在 Library/Preferences就是偏好设置目录下
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject:@"likelin" forKey:@"name"];

// 如果存储可变对象怎么办?我们可以先将可变变成不可变对象
NSMutableArray *mutableArr = [NSMutableArray arrayWithObjects:@"jone",@"andy",@"blus", nil];
NSArray *array = [mutableArr copy];
[user setObject:array forKey:@"names"];

// 常见用处是一般在app 上登陆界面的记住密码,和自动登陆时用的比较多
}

/**
*  归档和反归档
*/

- (void)test2
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [path stringByAppendingPathComponent:@"person.data"];
Person *p = [[Person alloc] init];
p.name = @"likelin";
p.age = 26;
p.height = 175;
NSLog(@"%@",filePath);
// 将person对象存储到person.data文件中
[NSKeyedArchiver archiveRootObject:p toFile:filePath];
// 从filePath中取出person对象存储的数据
Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"%@-----%d-----%f",per.name,per.age,per.height);
}
@end
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: