iOS中数据存储的几种代码实现

首先,可以通过获取应用沙盒的全路径然后直接使用write to file 直接写入沙盒:

//写入方法

-(void)test {

    // 应用沙盒根目录

    NSString *home =  NSHomeDirectory();

     NSLog(@"home");

    // 获得documents文件夹目录

    NSString *doc = [home stringByAppendingPathComponent:@"documents"];

    // 获得文件全路径

    NSString *filePath = [doc stringByAppendingPathComponent:@"abc.plist"];

    // 将数据保存到plist文件中

    //    [@"rose" writeToFile:filePath atomically:YES];

    NSArray *array =  @[@"rose",@"jack"];

        [array writeToFile:filePath atomically:YES];

    // 凡是能够调用writeToFile:方法的对象都可以直接将数据保存到plist.比如NSString,NSArray,NSDictionary,NSData,NSNumber....

}


//取出方法

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    // 应用沙盒根目录

    NSString *home =  NSHomeDirectory();

    // 获得documents文件夹目录

    NSString *doc = [home stringByAppendingPathComponent:@"documents"];

    // 获得文件全路径

    NSString *filePath = [doc stringByAppendingPathComponent:@"abc.plist"];

    // 从沙盒中获得数据

    NSArray *array =  [NSArray arrayWithContentsOfFile:filePath];

    NSLog(@"%@", array);

}


2.使用

NSUserDefaults  存储,默认存入偏好设置

 // 偏好设置对象

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:@"jack" forKey:@"name"];

    [defaults setObject:@"rose" forKey:@"password"];

    [defaults setInteger:100 forKey:@"age"];

    [defaults setDouble:1.9 forKey:@"height"];

    [defaults setBool:YES forKey:@"sex"];

    [defaults setFloat:189.9 forKey:@"weight"];

    

    // ios8之前还有加入下面代码

    // 立即同步,立即保存数据

    [defaults synchronize];

///取出数据

 NSUserDefaults *defaults = [[NSUserDefaults alloc] init];

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

    BOOL sex = [defaults boolForKey:@"sex"];

    NSInteger age =  [defaults integerForKey:@"age"];

3.使用

NSKeyedArchiver  保存数据

 NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSString *filePath =  [docDir stringByAppendingPathComponent:@"stu.data"];

    // 保存自定对象

    // NSKeyedArchiver:归档:就数据保存到文件的过程

    [NSKeyedArchiver archiveRootObject:student toFile:filePath];

解档

    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSString *filePath =  [docDir stringByAppendingPathComponent:@"stu.data"];

    

//    NSKeyedUnarchiver:解档:将文件中的数据对入内存中

   HMStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

     

     //对象需要遵守NSCoding协议并且重写- (void)encodeWithCoder:(NSCoder *)encoder {

//     [encoder encodeObject:self.title forKey:@"title"];}

//    

//     - (nullable instancetype)initWithCoder:(NSCoder *)decoder {

//          if (self = [super init]) {

//               self.title =  [decoder decodeObjectForKey:@"title"];

//          }

//          return self;

//     }



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值