IOS 基于SQL实现可以保存聊天记录的功能实现

IOS 基于SQL实现可以保存聊天记录的功能实现

由于公司要在app中实现聊天功能,在花了一段时间了解实现该功能后发现网上的资料大多只实现了聊天对话,互发图片,录音等等,找了好久都没有发现一个自带存储聊天记录的资料,于是我在简单的用SQL实现了存储功能后在此分享一下,希望对有需要的童鞋有帮助

使用FMDB框架封装

首先打开数据库,没有的话新建一个

-(id)initWithIdf:(int)idf{

NSString *idpath = [NSString stringWithFormat:@"Documents/%d.db",idf];

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:idpath];

_db = [[FMDatabase alloc] initWithPath:path];

BOOL res = [_db open];

if (res == NO) {

NSLog(@"打开数据库失败");

return self;

}else{

NSLog(@"打开数据库%@",path);

}

res = [_db executeUpdate:@"create table if not exists chat(uid integer primary key autoincrement,direct integer,talk text)"];

if (res == NO) {

NSLog(@"创建对话表失败");

[_db close];

return self;

}else{

NSLog(@"创建对话表ok");

}

return self;

}

然后添加用户

-(void)addTalk:(int)dir with:(NSString *)str{

BOOL res = [_db executeUpdate:@"INSERT INTO chat (direct, talk) VALUES (?, ?);",[NSNumber numberWithInt:dir],str];

if (res) {

NSLog(@"保存成功");

}else{

NSLog(@"保存失败");

}

}

最后是获取以往的信息,如果只需要要最新的几条可以用注释里面的

-(NSArray )getTalk:(YsRoom )use{

NSMutableArray *arry = [NSMutableArray array];

//如果只取5条信息

// NSString a = @"select from chat order by uid desc limit 5";

// FMResultSet *set = [_db executeQuery:a];

FMResultSet set = [_db executeQuery:@"select from chat"];

while ([set next]) {

NSString *name = [set stringForColumn:@"talk"];

int a = [set intForColumn:@"direct"];

YsModel *model = [YsModel new];

model.text = name;

[arry addObject:model];

NSLog(@"talk=%@\n dir=%d",name,a);

}

return arry;

}

这样就实现了最简单的文本保存,如果要保存相片的话可以先转位data形式保存,这里暂时没有实现

下面是git的地址

This link
如果觉得有帮助的话帮我打个星哦,我也会去继续完善的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值