美文网首页
数据存储--归档篇

数据存储--归档篇

作者: 只敲代码不偷桃 | 来源:发表于2016-04-18 13:18 被阅读28次
Plist
  • plist只能存储系统自带的一些常规的类,也就是有writeToFile方法的对象才可以使用plist保存数据。比如:字符串、、数组、字典、NSNumber、NSData....
偏好设置
  • 偏好设置是专门用来保存应用程序的配置信息的,一般情况不要再偏好设置中保存其他数据。如果利用系统的偏好设置来存储数据,默认就是存在Preferences文件夹下面的。偏好设置会将所有的数据保存到同一个文件中。偏好设置的本质其实就是Plist。


    偏好设置

归档的步骤:
在ViewController里保存Person对象
1.在ViewController的.m文件中

#import "ViewController.h"
#import "Person.h"

@interface ViewController ()
/**人*/
@property (nonatomic ,strong)Person *people;
/**路径*/
@property (nonatomic ,strong)NSString *path;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  //初始化数据
  [self initData];
 
}
-(void)initData
{
  //创建保存的对象
  Person *p = [[Person alloc]init];
  p.name = @"张三";
  p.age = 18;
  p.weight = 52.8;
  self.people = p;
  //保存路径
  NSString *dicPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
  self.path = [dicPath stringByAppendingPathComponent:@"people"];
}

- (IBAction)save:(UIButton *)sender {
  NSLog(@"path = %@",self.path);
    //将自定义对象保存到文件中
  [NSKeyedArchiver archiveRootObject:self.people toFile:self.path];
}
- (IBAction)unSave:(id)sender {
    // 2.从文件中读取对象
  Person *peo = [NSKeyedUnarchiver unarchiveObjectWithFile:self.path];
  NSLog(@"name = %@ age = %ld weight = %.2f",peo.name, peo.age ,peo.weight);
}```

 在Person.h中

import <Foundation/Foundation.h>

// 如果想将一个自定义对象保存到文件中必须实现NSCoding协议
@interface Person : NSObject<NSCoding>
/名字/
@property (nonatomic ,strong)NSString name;
/
年龄/
@property (nonatomic ,assign)NSInteger age;
/
体重/
@property (nonatomic ,assign)float weight;
@end```
在Person.m中

// 当将一个自定义对象保存到文件的时候就会调用该方法
// 在该方法中说明如何存储自定义对象的属性
// 也就说在该方法中说清楚存储自定义对象的哪些属性
- (void)encodeWithCoder:(NSCoder *)aCoder
{
  [aCoder encodeObject:self.name forKey:@"PersonName"];
  [aCoder encodeInteger:self.age forKey:@"PersonAge"];
  [aCoder encodeFloat:self.weight forKey:@"PersonWeight"];
}
// 当从文件中读取一个对象的时候就会调用该方法
// 在该方法中说明如何读取保存在文件中的对象
// 也就是说在该方法中说清楚怎么读取文件中的对象
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
{
  if (self = [super init]) {
   
    self.name = [aDecoder decodeObjectForKey:@"PersonName"];
    self.age = [aDecoder decodeIntegerForKey:@"PersonAge"];
    self.weight = [aDecoder decodeFloatForKey:@"PersonWeight"];
   
  }
  return self;
}```

相关文章

  • 数据存储--归档篇

    Plist plist只能存储系统自带的一些常规的类,也就是有writeToFile方法的对象才可以使用plist...

  • 缓存之归档、反归档

    归档反归档是数据存储方式的一种。归档将复杂数据结构转换成NSData进行存储,反归档将NSData转成复杂数据结构...

  • iOS-归档NSCoding序列化

    归档 归档->数据持久化的方式->加密(把文件加密《不是把数据加密》 归档分为: 1、存储数据(编码、序列化、归档...

  • 归档 存储数据

    归档一般都是保存自定义对象的时候,使用归档.因为plist文件不能够保存自定义对象. 如果一个字段当中保存有自定义...

  • 归档 存储数据

    归档一般都是保存自定义对象的时候,使用归档.因为plist文件不能够保存自定义对象.如果一个字段当中保存有自定义对...

  • UI控件进阶3——数据存储

    数据存储 iOS应用数据存储的常用方式?XML属性列表(plist)归档(归档:用某种格式来保存一个或者多个对象,...

  • ios面试题7

    三.数据存储 1.数据存储技术 1>数据存储的几种方式 XML属性列表(plist)归档 Preference(偏...

  • 3.1 数据持久化(存储)---数据存储(FMDBDemo)

    数据持久化(存储)---数据存储 数据存储几种方式 1: 归档 重点 必会 常用于自动登录2: NSdi...

  • OC 数据归档

    数据归档作为一种轻量级的数据存储方式,和属性列表不同之处在于存储的对象广泛,几乎任何类型的对象都能被归档存储且存储...

  • iOS数据存储

    iOS开发中数据存储有两类:一、存储为文件 如归档、解归档、plist文件存储及偏好设置都是存储为文件二、存储到...

网友评论

      本文标题:数据存储--归档篇

      本文链接:https://www.haomeiwen.com/subject/aixalttx.html