li6185377 / LKDBHelper-SQLite-ORM

全自动的插入,查询,更新,删除, an automatic database operation thread-safe and not afraid of recursive deadlock
MIT License
1.21k stars 288 forks source link

多账号登录的时候,怎么为不用账号创建不同的数据库呢 #78

Closed heyehao2008 closed 8 years ago

heyehao2008 commented 8 years ago

不好意思,请教一个问题: 比如社交类app。每一个账号登录后,只显示该账号缓存的数据。本来想为每张表都添加一个userID字段。后来想想应该为每一个账号创建一个数据库比较好。但是为每一个账号创建一个数据库,使用该库要怎么操作呢?

li6185377 commented 8 years ago

返回表名的时候 加上userid

heyehao2008 commented 8 years ago

那意思是每一张表的表名都要加上userID来区别不同用户么

li6185377 commented 8 years ago

创建不同数据库也可以。 每个model 重载 getUsingLKDBHelper ,里面返回相应userid的数据库

Ronda90 commented 8 years ago

getUsingLKDBHelper ,getTableName 都是类方法。重写这两个方法时,在类方法中不能通过self.uid获取到model的属性,总不能在model中写个单例来获取属性吧,这样也不科学。作者您有什么好的方法么?

// User.h文件
@interface User : NSObject
@property(copy,nonatomic)NSString* uid;
@end
// User.m文件
@implementation User

+ (LKDBHelper *)getUsingLKDBHelper{
    static LKDBHelper* db;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        db = [[LKDBHelper alloc]initWithDBName:@"uid"];//这里如何传递uid
    });
    return db;
}

+ (NSString *)getTableName{
    return [NSString stringWithFormat:@"RHFriendsAlertTable%@",@"uid"];//这里如何传递uid
}

+ (NSString *)getPrimaryKey{
    return @"uid";
}

@end

更新:
不好意思,想偏了。uid应该是当前登录用户的uid,而不是model的uid属性。忽略这个问题吧