Help us understand the problem. What is going on with this article?

Swift2.0でCouchbase Liteを動かす

More than 3 years have passed since last update.

概要

Couchbase Liteはモバイル用のNoSQLデーターベースです。
iOS版はObjective-Cで記述されたライブラリですが、Swiftアプリケーションからも利用出来ます。

Swift2.0でCouchbase Liteを動かす手順を書きます。

動作環境

  • Xcode 7.2
  • OS X El Capitan (10.11.2)

CocoaPodsがインストールされている事が前提です。

プロジェクトの作成

Xcodeのメニューから [File] > [New] > [Project] を選択
今回はシンプルな Single View Application を選択します。

cb1.png

Language に Swift を選択します。

cb2.png

プロジェクトを作成したら一度 Xcode を終了します。

Couchbase Liteのインストール

CocoaPods経由でインストールするのが簡単です。

ターミナルから、先ほど作成したプロジェクトディレクトリに移動してPodfileを作成します。

$ cd /path/to/your/app
$ pod init

Podfileをエディタで開いて couchbase-lite-ios を追加します。
バージョンはCocoaPodsのサイトで確認出来ます。クリップボードアイコンをクリックするとコマンドをコピー出来ます。

target 'Sample' do
  pod 'couchbase-lite-ios', '~> 1.1'
end

ターミナルから下記コマンドを実行してCouchbase Lite をインストールします。

$ pod install

Podsディレクトリとワークスペースファイル(*.xcworkspace)が生成されます。

cb3.png

Xcodeの設定

生成されたワークスペースファイルをダブルクリックしてXcodeを起動します。

ビルド確認

実機の場合、Couchbase Liteのバージョンによっては、下記のようなエラーが出る場合があります。
シミュレータの場合は関係ありません。

ld: 'CouchbaseLite' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.

その場合は [Build Settings] > [Build Options] > [Enable Bitcode] を NO にしてください。

cb4.png

Re-release 1.1.1 built with Xcode 7, for bitcode support

ブリッジヘッダーの作成

SwiftからObjectiveCのコードを参照するには、ブリッジヘッダーを用意する必要があります。
[Build Settings] > [Swift Compiler - Code Generation] > [Objective-C Bridging Header] でブリッジヘッダーを指定しますが、簡単な方法があります。

Xcodeのメニューから [File] > [New] > [File] を選択
Objective-C File を選択します。

cb5.png

ファイル名は後で削除するので適当で構いません。

cb6.png

[Create Bridging Header]を選択します。

cb7.png

プロジェクトにブリッジヘッダーが追加され設定も反映してくれます。
作成したObjective-Cファイルは削除します。

ブリッジヘッダーにCouchbase Lite のヘッダーをインポートします。

Sample-Bridging-Header.h
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import <CouchbaseLite/CouchbaseLite.h>

以上でCouchbase Lite が使える準備が整いました。

テストコード

実際に使えるかどうか、簡単なテストコードを書いてみます。
Swift2.0の記述なのでご注意ください。

ViewController.swift
import UIKit

class ViewController: UIViewController {

    var database: CBLDatabase?

    override func viewDidLoad() {
        super.viewDidLoad()

        do {
            try test()
        } catch let error {
            print("\(error)")
        }
    }

    func test() throws {
        let manager = CBLManager.sharedInstance()
        try self.database = manager.databaseNamed("test")

        let properties = [
            "name": "taro",
            "age": 30
        ]
        let doc = self.database?.createDocument()

        let ret = try doc?.putProperties(properties)
        print("ドキュメントID=\(ret!.document!.documentID)")

        let count = self.database?.documentCount
        print("ドキュメント件数=\(count!)")
    }
}

ビルドして実行してみます。
デバッグコンソールに登録したドキュメントIDとデータベース内のドキュメント件数が表示されます。
アプリを終了して再実行すると、ドキュメント件数が増えているのが確認出来るはずです。

最後に

2015年12月、Swiftがオープンソースとして公開されました。
今後ますますSwiftコードで書かれたアプリケーションが増えていくでしょう。

Couchbase Mobile Developサイトには、Swiftコードのサンプルが豊富にあります。
参考にしてみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away