ios数据持久化

写的都是我自己平时用的,有不足多多指教

1.归档

新建一个类 继承 NSObject 在.h文件中 声明你要存储的数据类型  

@interface LodinModle : NSObject<NSCoding>//这个要添加

@property (nonatomic , copy) NSString *phong;

@property (nonatomic , copy) NSString *pass;

@property (nonatomic , copy) NSString *time;

.m文件中  实现协议(2个方法)

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.phong forKey:@"phong"];

[aCoder encodeObject:self.pass forKey:@"pass"];

[aCoder encodeObject:self.time forKey:@"time"];

}

-(instancetype)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init ]) {

self.phong = [aDecoder decodeObjectForKey:@"phong"];

self.pass  = [aDecoder decodeObjectForKey:@"pass"];

self.time = [aDecoder decodeObjectForKey:@"time"];

}

return self;

}

使用:


在需要保存数据的控制器中导入上面类的头文件

创建保存的数据

LodinModle *p = [[LodinModle alloc]init];

获取\创建保存的路径

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

NSString *path=[docPath stringByAppendingPathComponent:@"person.yangyang"];

[NSKeyedArchiver archiveRootObject:p toFile:path];


取出数据

获取路径  如上 

p=[NSKeyedUnarchiver unarchiveObjectWithFile:path];


2.偏好设置

保存数据

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

[defaults setObject:要保存的数据 forKey:@"name"];

取出数据

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

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


3.数据库(fmdb)

获取\创建路径

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

NSString *fileName = [doc stringByAppendingPathComponent:@"S.sqlite"];

打开数据库

FMDatabase *db = [FMDatabase databaseWithPath:fileName];

[db open];

建表

[db executeUpdate:@"CREATE TABLE  IF NOT EXISTS  表名 (数据名 类型, Age integer, Sex integer, Phone text, Address text, Photo blob)"];

插入数据

[db executeUpdate:@"INSERT INTO 表名(属性,属性) VALUES ('妮子',20)"];

修改数据

[db executeUpdate:@"UPDATE 表名 SET 属性 = '娃子狗' WHERE 属性 = 20;"];

筛选数据

[db executeUpdate:@"DELETE FROM 表名 WHERE 属性 < 22"];

遍历数据集

while ([rs next]) {

NSString *name = [rs stringForColumn:@"name"];

int age = [rs intForColumn:@"age"];

}

删除表

[db executeUpdate:@"DROP TABLE IF EXISTS 表名"];

关闭数据库

[db close]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,...
    HWenj阅读 3,582评论 0 8
  • iOS中的数据持久化方式,基本上有以下四种: 属性列表、对象归档、SQLite3和Core Data 1.属性列表...
    Lee坚武阅读 4,099评论 0 51
  • Title: iOS数据持久化 ##数据持久化概念 数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型...
    barrylyl阅读 4,446评论 0 3
  • NSKeyedArchiver是NSCoder的具体子类,提供了一种方法来将对象(和标量值)编码成与体系结构无关的...
    上善若水jf阅读 3,440评论 0 1
  • 简介 持久化就是将数据保存到硬盘中,让APP重启后可以使用之前保存的数据.在iOS开发中,可能会用到一下几种 pl...
    carpond阅读 3,952评论 0 1