用戶體系緩存調(diào)整

APP一般都會保存用戶數(shù)據(jù)(除銀行類啊送、政府某些及個別神奇的)
一個調(diào)整的過程

1.偏好設置

一開始很多同學都會喜歡使用偏好設置隅茎,存取通過Key,剛開始比較簡單的情況下。簡單的APP偷懶做法择诈,不是很推薦械蹋,如需使用Key統(tǒng)一定義。
KV

2.YYCache

KV.
V直接對象

3.歸檔(接口穩(wěn)定下修改羞芍,后期接口變動調(diào)整新增哗戈,無法滿足后修改成數(shù)據(jù)庫),但當時不記得什么原因荷科,沒有使用YYCache而使用了歸檔跪妥。

然后歸檔這邊由于用戶單例類賦值的問題(新增字段無法加入讶凉,刪除文件再次寫入存在風險狸棍,查看備注時這么寫酣胀,具體那時候忘了,總之是新增屬性全度,從接口取數(shù)據(jù)賦值存值有問題,有時候無法保存成功)斥滤,然后修改成數(shù)據(jù)庫緩存将鸵,兼容處理

image.png

4.數(shù)據(jù)庫+偽單例

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

why偽單例?
數(shù)據(jù)庫使用WHC_ModelSqliteKit
數(shù)據(jù)庫模型映射佑颇,線程安全顶掉,模型層級,加密(注意不加密和加密不兼容挑胸,無法無縫過渡)痒筒,問題是需要移除后再添加,不然會重復茬贵。

image.png

new方法創(chuàng)建一個或多個新實例,雖然這個實例一直沒有使用簿透,也沒有賦值給給instance,instance也是正常的解藻,項目也可以正常使用老充,迭代了十幾個版本,但是今天才注意到這個無限創(chuàng)建了實例螟左。發(fā)現(xiàn)了必須要改一下啡浊。

5.數(shù)據(jù)庫+單例

image.png

存在問題

1.切換用戶單例需要銷毀
      解決線程dispatch_once線程的dispatch_once_t *predicate設置成0,就會再次執(zhí)行胶背。線程設置成0巷嚣,實例置空,登錄成功以后強制調(diào)用一次钳吟,防止get方法判斷時會生成一次廷粒。+ (void)signOut里調(diào)用cleanShare.
image.png
2.數(shù)據(jù)庫new方法沒法改(數(shù)據(jù)庫new方法以后重新賦值本地數(shù)據(jù)庫的數(shù)據(jù),單例重新讀取本地數(shù)據(jù)红且,賦值無效)
        1.第三方庫不推薦改動评雌,影響后來者使用
        2.pod管理树枫,項目類無法引用
        3.調(diào)度也不行,總要讓他創(chuàng)建吧  
        那就創(chuàng)建吧景东,我把內(nèi)存實例都占了唄砂轻,單例寫法完整版,看上圖斤吐。
3.allocWithZone方法搔涝,
    蘋果說是歷史原因的方法,但是確實是因為他和措,占了個新內(nèi)存庄呈,新對象實例。然后重寫以后派阱,內(nèi)存我占了诬留,init以后,重新讀取贫母,把原來賦值的屬性都清掉了文兑,讀取了上次數(shù)據(jù)庫的數(shù)據(jù),so不同步腺劣,臨時字典保存绿贞,反轉。臨時解決一下橘原。
    解決看下圖籍铁。通過臨時值保持,注意模型有數(shù)組趾断,最好注釋數(shù)組類型(名詞忘了)拒名。NSArray <YxModel*>* XXX; 解析映射。
image.png

由于開始支持門店和代理商登錄芋酌,后期可能支持品牌商靡狞,忽悠API映射字典的緩存,省去一些兼容麻煩(坑吧)隔嫡,每個版本的映射修改甸怕,不需要再做什么兼容,根據(jù)plist文件讀取腮恩。

續(xù):上面數(shù)據(jù)庫+單例的2.3問題思考一下會發(fā)現(xiàn)一個問題梢杭,數(shù)據(jù)庫是數(shù)據(jù)庫,單例是單例秸滴,為啥這么緊密武契?APP退出保存不行嗎?
所以最后只有在APP退出時保存,就沒有這些問題了咒唆。注意數(shù)據(jù)庫只是為了下次打開的讀取届垫,單例是用戶數(shù)據(jù)在APP打開后的讀取,其實有時候不需要緩存那么多全释,就如装处,沒網(wǎng)你上什么APP?浸船。妄迁。。開個玩笑李命,夸張了一點點登淘。。封字。緩存還是要做的黔州,能多做點就多做點。

image.png

5.數(shù)據(jù)庫部分遷移阔籽。原本是默認目錄流妻,添加uid目錄

首先思考有二個方案,結合項目仿耽,發(fā)現(xiàn)原來表主鍵沒設置合冀,設置新組件的話各薇,會自動更新掉原來主鍵项贺,可以設置成不更新,但是下個版本具體有沒有更新又不確定峭判,在不影響用戶為前提的情況下开缎,只是使用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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末林螃,一起剝皮案震驚了整個濱河市奕删,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疗认,老刑警劉巖完残,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異横漏,居然都是意外死亡谨设,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門缎浇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扎拣,“玉大人,你說我怎么就攤上這事《叮” “怎么了誉券?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刊愚。 經(jīng)常有香客問我踊跟,道長,這世上最難降的妖魔是什么百拓? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任琴锭,我火速辦了婚禮,結果婚禮上衙传,老公的妹妹穿的比我還像新娘决帖。我一直安慰自己,他們只是感情好蓖捶,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布地回。 她就那樣靜靜地躺著,像睡著了一般俊鱼。 火紅的嫁衣襯著肌膚如雪刻像。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天并闲,我揣著相機與錄音细睡,去河邊找鬼。 笑死帝火,一個胖子當著我的面吹牛溜徙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播犀填,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蠢壹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了九巡?” 一聲冷哼從身側響起图贸,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冕广,沒想到半個月后疏日,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡撒汉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年沟优,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片神凑。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡净神,死狀恐怖何吝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹃唯,我是刑警寧澤爱榕,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站坡慌,受9級特大地震影響黔酥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洪橘,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一跪者、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熄求,春花似錦渣玲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卿城,卻和暖如春枚钓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瑟押。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工搀捷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人多望。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓嫩舟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親便斥。 傳聞我的和親對象是個殘疾皇子至壤,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評論 25 707
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫威始、插件枢纠、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,098評論 4 62
  • 在閱讀本書之前晋渺,我甚至不知道阿德勒是誰,可在我讀完推薦序和目錄之后脓斩,我便毫不猶豫的要分享力薦木西。倘若你在書中看到“如...
    君羊的小宇宙閱讀 1,474評論 5 11
  • 偉大的上帝 人們純凈了
    禾刀水白閱讀 121評論 0 0
  • priority 優(yōu)先級:0-1000 之間的整數(shù) 1000代表必須,0 不會生效 公式 First Item ...
    vvkeep閱讀 235評論 0 2