用户体系缓存调整

APP一般都会保存用户数据(除银行类、政府某些及个别神奇的)
一个调整的过程

1.偏好设置

一开始很多同学都会喜欢使用偏好设置,存取通过Key,刚开始比较简单的情况下。简单的APP偷懒做法,不是很推荐,如需使用Key统一定义。
KV

2.YYCache

KV.
V直接对象

3.归档(接口稳定下修改,后期接口变动调整新增,无法满足后修改成数据库),但当时不记得什么原因,没有使用YYCache而使用了归档。

然后归档这边由于用户单例类赋值的问题(新增字段无法加入,删除文件再次写入存在风险,查看备注时这么写,具体那时候忘了,总之是新增属性,从接口取数据赋值存值有问题,有时候无法保存成功),然后修改成数据库缓存,兼容处理

image.png

4.数据库+伪单例

 + (instancetype)shareInstance {
    @synchronized(self) {
         if (instance == nil) {
             instance = [[UserProfile alloc] initWithSqlite];
             pthread_mutex_init(&(instance->lock), NULL);
         }
    }
     return instance;
 }

why伪单例?
数据库使用WHC_ModelSqliteKit
数据库模型映射,线程安全,模型层级,加密(注意不加密和加密不兼容,无法无缝过渡),问题是需要移除后再添加,不然会重复。

image.png

new方法创建一个或多个新实例,虽然这个实例一直没有使用,也没有赋值给给instance,instance也是正常的,项目也可以正常使用,迭代了十几个版本,但是今天才注意到这个无限创建了实例。发现了必须要改一下。

5.数据库+单例

image.png

存在问题

1.切换用户单例需要销毁
      解决线程dispatch_once线程的dispatch_once_t *predicate设置成0,就会再次执行。线程设置成0,实例置空,登录成功以后强制调用一次,防止get方法判断时会生成一次。+ (void)signOut里调用cleanShare.
image.png
2.数据库new方法没法改(数据库new方法以后重新赋值本地数据库的数据,单例重新读取本地数据,赋值无效)
        1.第三方库不推荐改动,影响后来者使用
        2.pod管理,项目类无法引用
        3.调度也不行,总要让他创建吧  
        那就创建吧,我把内存实例都占了呗,单例写法完整版,看上图。
3.allocWithZone方法,
    苹果说是历史原因的方法,但是确实是因为他,占了个新内存,新对象实例。然后重写以后,内存我占了,init以后,重新读取,把原来赋值的属性都清掉了,读取了上次数据库的数据,so不同步,临时字典保存,反转。临时解决一下。
    解决看下图。通过临时值保持,注意模型有数组,最好注释数组类型(名词忘了)。NSArray <YxModel*>* XXX; 解析映射。
image.png

由于开始支持门店和代理商登录,后期可能支持品牌商,忽悠API映射字典的缓存,省去一些兼容麻烦(坑吧),每个版本的映射修改,不需要再做什么兼容,根据plist文件读取。

续:上面数据库+单例的2.3问题思考一下会发现一个问题,数据库是数据库,单例是单例,为啥这么紧密?APP退出保存不行吗?
所以最后只有在APP退出时保存,就没有这些问题了。注意数据库只是为了下次打开的读取,单例是用户数据在APP打开后的读取,其实有时候不需要缓存那么多,就如,没网你上什么APP?。。。开个玩笑,夸张了一点点。。。缓存还是要做的,能多做点就多做点。

image.png

5.数据库部分迁移。原本是默认目录,添加uid目录

首先思考有二个方案,结合项目,发现原来表主键没设置,设置新组件的话,会自动更新掉原来主键,可以设置成不更新,但是下个版本具体有没有更新又不确定,在不影响用户为前提的情况下,只是使用1方案,当然可以在其他表外加添加uid字段(也没啥用)
1.用户表主键uid+uid目录
2.用户表+其他表一个uid字段
WHC_ModelSqliteKit库上添加了一个新方法(https://github.com/LDXu/WHC_ModelSqliteKit
做了修改自动处理兼容

+ (NSDictionary *)whc_SqlitePathAutoHandle {
    NSString *member_id = [UserProfile backMember_id];
    NSString *value = [WHC_ModelSqlite defaultPath];
    NSString *key = member_id.length?[NSString stringWithFormat:@"%@%@/", [WHC_ModelSqlite defaultPath], member_id]:value;
    return @{key: value};
}

+ (NSString *)whc_OtherSqlitePath {
    return [NSString stringWithFormat:@"%@UserProfile_v3.3.0.sqlite", [WHC_ModelSqlite defaultPath]];
}

外加一个3.4.0版本的兼容处理


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,613评论 4 59
  • 在阅读本书之前,我甚至不知道阿德勒是谁,可在我读完推荐序和目录之后,我便毫不犹豫的要分享力荐。倘若你在书中看到“如...
    君羊的小宇宙阅读 1,426评论 5 11
  • 伟大的上帝 人们纯净了
    禾刀水白阅读 105评论 0 0
  • priority 优先级:0-1000 之间的整数 1000代表必须,0 不会生效 公式 First Item ...
    vvkeep阅读 223评论 0 2