ios 几种数据存储方式

<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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值