问题描述:有多个账户,先登录第一个账号,退出登录,登录第二个账号,杀掉应用程序,启动app,此时发现从数据库 取出的还是第一个账号的信息,而不是第二次登录的账号信息
问题分析:查看JKDBModel的源码,发现
➕ (JKDBHelper *)shareInstance;单例类,只创建一次。
解决办法:
第一,创建数据库时候路径加userid来区分。
JKDBHelper中+ (NSString *)dbPathWithDirectoryName:(NSString *)directoryName方法里面:
源码:NSString *dbpath = [docsdir stringByAppendingPathComponent:@"jkdb.sqlite"];
修改为:
NSString *dbpath = [docsdir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@jkdb.sqlite",USER_ID]];
分析:源码的数据库叫jkdb.sqlite,登录多个账号的时候,应该给一个可以区分的,有唯一性的名字。
第二,每次存数据库前面,销毁JKDBHelper。
(1)在JKDBHelper里加上类方法
➕ (void)destroyJKDBHelper{
onceToken = 0;
_instance = nil;
}
(2)在退出登录之后调取
[JKDBHelper destroyJKDBHelper ];
这样在退出登录时候,单例被置为nil,且账号数据没有被清空。








网友评论