Couchbase Lite for iOS のインストールメモ（雑な説明だけど64bit対応も補足)


# はじめに
iOS のローカルストレージをどれにしようか悩んでいたところ Couchbase Lite を見つけた。
RESTFul + JSON でサーバーとのやりとりがメインなので、相性が良さそうなので調べてみる事に。
色々と Couchbase Lite のほうが柔軟そうな気がしてきた。
MongoDB を使い始めた時ぐらいに、どっち使おうか悩んだ事を思い出した。
コミュニティーもしっかりしていて、信頼はそこそこできる。
MongoDB も使い慣れているので、Couchbase Lite で攻める事にしようかなと思った。
64bit 対応が多少面倒だけど、丁寧に wiki を追えば分かる。
ここで、[Road Map](https://www.couchbase.com/issues/browse/CBLT#selectedTab=com.atlassian.jira.plugin.system.project%3Aroadmap-panel) が確認できる。
[Developing Apps](http://docs.couchbase.com/couchbase-lite/cbl-ios/#developing-apps) を一通り読めばだいたいやれることは分かる。
大分高機能で、ちゃんと使えれば良い感じかも。
基本的な機能は整っている感じ。
[CouchbaseLiteListener](http://docs.couchbase.com/couchbase-lite/cbl-ios/#serving-the-rest-api) 使って、peer-to-peer ぽいことも出来るし、遊べる感じ。

# ダウンロード & インストール
* [最新版をダウンロード](http://www.couchbase.com/download#cb-mobile)
 * （2014/5/12 現在　Beta-3 で 64bit 対応 Framework は手作業）
* 64bit 対応方法は以下
 * ソースをgitからclone
 * [Building Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios/wiki/Building-Couchbase-Lite)
 * [関連issue](http://www.couchbase.com/issues/browse/CBLT-224)

```
// git clone して、submodule update して、以下のコマンドでコンパイル
// build/Release-ios-universal/CouchbaseLite.framework ができるのでそれを利用
$ xcodebuild -target "CBL iOS" -configuration 'Release 64bit' 
```

* ファイルを解凍して、XCode のプロジェクトナビゲーターの **Frameworks** フォルダーにドラック&ドロップする
![Screen Shot 2014-05-10 at 4.22.18 PM.png](https://qiita-image-store.s3.amazonaws.com/0/18766/f4168991-70d0-fb8f-cb54-88e8d2e0619d.png "Screen Shot 2014-05-10 at 4.22.18 PM.png")
* * *

* インストール先のターゲットを正しく選択して保存する
![Screen Shot 2014-05-10 at 4.21.09 PM.png](https://qiita-image-store.s3.amazonaws.com/0/18766/5b52000e-47b4-cbf1-6599-20bd461a0627.png "Screen Shot 2014-05-10 at 4.21.09 PM.png")
* * * 

* プロジェクトの **Build Settings** を選択し、 **Other Linker Flags** に **-ObjC** を追加
![Screen Shot 2014-05-10 at 4.27.00 PM.png](https://qiita-image-store.s3.amazonaws.com/0/18766/b21a3402-f6ca-60e9-ee14-6d70ee2cb767.png "Screen Shot 2014-05-10 at 4.27.00 PM.png")
* * * 

* Linked Framework & Libraries に以下を追加
 * CFNetwork.framework
 * Security.framework
 * SystemConfiguration.framework
 * libsqlite3.dylib
 * libz.dylib
![Screen Shot 2014-05-10 at 4.29.11 PM.png](https://qiita-image-store.s3.amazonaws.com/0/18766/46db56ae-f29b-a64c-b11e-65687054d937.png "Screen Shot 2014-05-10 at 4.29.11 PM.png")
* * *

* ビルドをしてみて、エラーがないか確認してエラーがなければOK

# 実装してみる
* ProjectNameAppDelegateヘッダーファイルに以下を追加

```objective-c:ProjectNameAppDelegate.h
#import <CouchbaseLite/CouchbaseLite.h>
...
``` 

* property を設定する

```objective-c:ProjectNameAppDelegate.h
 @property (strong, nonatomic) CBLDatabase *database;
```

* application:didFinishLaunchingWithOptions: メソッドに以下を追加する

```objective-c:ProjectNameAppDelegate.m
// CBLManger の shared instance を作成
CBLManager *manager = [CBLManager sharedInstance];

// データーベースの作成
// データーベースの名前に使える文字は、小文字[a-z], 数値[0-9], 特殊文字[$_()+-/]
NSError *error;
// self.database = [manager createDatabaseNamed: @"database_name" error: &error];
// beta-3 で createDabaseNamed -> databaseNamed に変わった
self.database = [manager databaseNamed: @"database_name" error: &error];
```
[バックグラウンドで CBLManager を使いたいとき](http://docs.couchbase.com/couchbase-lite/cbl-ios/#create-a-background-cblmanager)


# 参照
* _必読_ [Couchbase Wiki](https://github.com/couchbase/couchbase-lite-ios/wiki)
* _必読_ [Couchbase Lite Docs](http://docs.couchbase.com/couchbase-lite/cbl-ios/)
* [Couchbase Lite](http://www.couchbase.com/mobile#lite)
* [CBLManger.h の主要個所翻訳](http://qiita.com/kiyotaman/items/1e79472e485cf8397e14)