iOS存储

作者: 韡韡_ea9b | 来源:发表于2019-12-12 13:42 被阅读0次

解档归档

  • 需要遵守NScoding协议
  • 优点:存储自定义数据对象
  • 缺点:只能一次性归档保存以及一次性解压。
    • 所以针对小量数据,且对数据操作笨拙,如果向改动数据的一小部分,需要解压整个归档数据
四个步骤:
1.遵守NSCoding协议
2.实现协议对应方法,encodeWithCoder和initWithCoder方法
3.归档方法
4.解档方法

1.
@interface Person : NSObject<NSCoding>
2.
- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.age forKey:@"sex"];
}
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
    self = [super init];
    if (self) {
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.age = [aDecoder decodeObjectForKey:@"sex"];
    }
    return self;
}
3.
Person *person = [[Person alloc]init];
person.name = @"abc";
person.sex = @"aa";
//归档
NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [path stringByAppendingPathComponent:@"person.data"];
[NSKeyedArchiver archiveRootObject:person toFile:filePath];
4.
NSString *path1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *filePath1 = [path1 stringByAppendingPathComponent:@"person.data"];
Person *person1 = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath1];
NSLog(@"%@---%@",person1.name,person1.sex);

NSUserDefaults偏好设置

  • 是一个单例对象,保存的数据类型有,基本数据类型和NSNumber、NSString、NSData、NSArray、NSDictionary、NSURL
  • 优点:
  • 缺点:
要使用,需要转换为支持的数据类型
例子:
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
UIImage *image=[[UIImage alloc]initWithContentsOfFile:@"photo.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 100);//UIImage对象转换成NSData
[defaults setObject: imageData forKey:@"image"];
[defaults synchronize];//立即保存

读取:
NSString *username = [defaults objectForKey:kUsernameKey];
删除:
[defaults removeObjectForKey:(nonnull NSString *)];

plist文件保存

  • plist本身就是XML文件,名字后缀为.plist
  • plist主要保存的数据类型为NSString、NSNumber、NSArray、NSDictionary
存储:
//获取路径
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
NSString *filePath = [cachePath stringByAppendingPathComponent:@"testPlist.plist"];
//生成字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"ran" forKey:@"name"];
[dict setObject:@"18" forKey:@"age"];
//存储:
[dict writeToFile:filePath atomically:YES];

取出:
NSDictionary *t = [NSDictionary dictionaryWithContentsOfFile:filePath];//filePath为路径

SQLite数据库

  • FMDB
  • 优点:对libsqlite3的封装,使用简洁,更加面向对象。对于多线程的并发进行了处理,是线程安全的
  • 缺点:对于OC语言的封装,只能在iOS开发中使用,跨平台存在局限性
    iOS FMDB库详解

CoreData

iOS CoreData数据库之创建详解

相关文章

  • iOS数据存储之NSCoder

    资源连接: iOS数据库存储之SQL语句; iOS数据库存储之SQLite3; iOS数据存储之文件沙盒; iOS...

  • iOS数据存储

    iOS数据存储 数据存储

  • iOS数据库存储之SQLite3

    资源连接: iOS数据库存储之SQL语句; iOS数据存储之文件沙盒; iOS数据存储之NSCoding; SQL...

  • iOS数据存储之文件沙盒

    资源连接: iOS数据库存储之SQL语句; iOS数据库存储之SQLite3; iOS数据存储之NSCoding;...

  • iOS数据库存储之SQL语句

    资源连接: iOS数据库存储之SQLite3; iOS数据存储之文件沙盒; iOS数据存储之NSCoding; S...

  • iOS-12 数据存储

    1iOS数据存储之Core Data(一) - 简书 2iOS数据存储之归档 - 简书 3iOS数据存储之偏好设置...

  • 沙盒机制

    IOS数据存储之文件沙盒存储

  • iOS Cookie 存储相关技术

    iOS Cookie 存储相关技术 iOS Cookie 存储相关技术一、什么是Cookie二、Cookie在Ht...

  • iOS数据存储--数据库

    iOS中数据存储方式 iOS中数据存储方式主要有以下几种 Plist NSUserDefaults NSCodin...

  • iOS基础之数据存储

    iOS数据存储 1. 概论 在iOS开发中数据存储的方式可以归纳为两类: 存储文件 和 存储到数据库. 2.文件存...

网友评论

      本文标题:iOS存储

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