iOS 使用couchbaselite 與couchDB同步

之前項目有一個需求,每天從服務器拿一首詩歌,然后加到本地數(shù)據(jù)庫。加到本地數(shù)據(jù)庫之后還要根據(jù)服務器對詩歌的增刪改查,本地數(shù)據(jù)也要相應修改。如果用傳統(tǒng)的接口方法增刪改查,邏輯會很復雜。

我就想,有沒有一種方法,能像git管理代碼一樣同步本地數(shù)據(jù)庫與服務器數(shù)據(jù)庫,這樣就簡單多了,這時候chouchbaselite能滿足我們的需求。

大家可以從couchbaselite官網下載最新framework:http://www.couchbase.com/nosql-databases/couchbase-mobile

導入framework,推薦用cocopod,不解釋。

就拿我們公司項目同步詩歌來說吧,首先,我們想要從couchDB上吧詩歌數(shù)據(jù)同步下來

首先導入頭文件和定義變量

database顧名思義就是本地數(shù)據(jù)庫,CBLReplication就是一個發(fā)送請求的類,這里定義了兩個,_push和_pull,用過git的人都知道,一個代表提交,一個是拉下來的意思,如果我們只需要同步服務器的數(shù)據(jù)的話_pull就ok。_push是本地作修改再提交的時候會用到,等下會提到。

創(chuàng)建database和請求


kDatabaseName 就是你數(shù)據(jù)庫名字,有一點要注意原文這樣寫道

不能用大寫字母,原因不明。

CBLReplication的創(chuàng)建

name和password就是couchDB的授權,kServerDbURL是couchDB數(shù)據(jù)庫地址。最后用通知去回調,可以添加進度條。PS,如果不想同步整個庫,只想同步其中幾條的話,可以用CBLReplication的filter和documentIDs。documentIDs是一個數(shù)組,里面放你想同步字段的documentid,couchDB每條數(shù)據(jù)都有documentid。filter就是內容篩選。

打印進度,SYNC idle為同步完成

取出數(shù)據(jù)


首先建立一個數(shù)據(jù)modle,couchbase里面提供了專門的modle類,然后再modle里面定義好接收的屬性例如



遍歷rowEnum,然后每一條加進我們創(chuàng)建的model。poem就是我們所要的每一條詩歌包含的數(shù)據(jù)。如果想要取出的時候作篩選,可以用predicate屬性去操作。

增刪改查

這個很簡單,看下api就可以了,對本地database做完操作想要提交上服務器,只需要生成一個push請求,然后[push start]就ok了。這里操作有空再寫


最后

couchbaselite 去管理客戶端根服務端的數(shù)據(jù),原理跟管理代碼一樣,很簡單。特別是一些數(shù)據(jù)增刪改查,都不需要后臺寫接口,直接對數(shù)據(jù)庫操作。沒用過的可以用下,然后一起研究交流。

weibo:http://weibo.com/u/1932188797/home?topnav=1&wvr=6

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容