Realm--: 簡化iOS下Realm寫入事務的最佳解決方案(其他平臺亦可借鑒次思路)
直接使用
Goto --> Github
開始閱讀
解決痛點
痛點1,重復代碼,本來增刪改查一般兩三行的,提交就占了2行,基本上代碼量多一小半 [[RLMRealm defaultRealm] beginWriteTransaction]; /// 修改資料庫 [[RLMRealm defaultRealm] commitWriteTransaction]; 痛點2 這種方式體驗比上方的好,但是多了block閉包,缺陷也不少,如不能直接return,跨域傳值,弱參考也有多余的代碼量,而且在block內部也需要重復獲取realm物件, [[RLMRealm defaultRealm] transactionWithBlock:^{ /// 修改資料庫 }];
需要封裝哪些功能?
- 寫入事務的開啟關閉
- realm物件的獲取方式
- 寫入事務避免嵌套
實作寫入事務的開啟關閉
- 利用cleanup屬性在作用域結束時自動執行的功能可以實作自動關閉寫入事務,并且不妨礙return,沒有跨作用于傳值,
實作realm物件的獲取方式
- 利用宏定義輕松向作用域內提供固定的realm變數
實作寫入事務避免嵌套
- 這種復雜的判斷宏不能很優美的解決需要引入特定物件,該物件主要負責記錄是否嵌套,然后處理對應的情況,
RealmLess的達成效果
{ @realm_writing_scope person.name = @"FKJJ"; }
特別復雜的情況,RealmLess的對生產效率的提高更加明顯
{ @realm_writing_scope_with(OtherRealmObject) [rll_realm deleteObject:obj1]; { @realm_writing_scope_with(rll_realm) [rll_realm addObject:obj2]; /// RealmLess的嵌套時修改立即生效 } obj2 = [Obj2 objectWhere:...]; }
其他平臺亦可借鑒此思路在解構式來實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/227152.html
標籤:iOS
上一篇:Android開發經驗總結
