LoginSignup
66
66

More than 5 years have passed since last update.

Swift「Parse」を使ってDB連携をしてみた。

Last updated at Posted at 2015-04-29

スクリーンショット_2015-04-29_午後4_27_36.png

Parse

ParseとはMBaaS(Mobile Backend as a Service)のことで、
サーバー側で行うDB操作、Push通知などの機能を提供してくれます。

Parseについての詳しい説明、メリット等は
個人のスマホアプリ開発者がParseを使うべき15の理由が分かりやすいです。

Parseは様々な機能を持ち合わせていますが、
今回はDB連携ということでDataという機能について紹介していきます。

導入方法

Sign Up

SignUpから登録します。

プロジェクトを作る

Create appを押下後、
Data->Mobile->iOS->Swift->NewProjectを選択します。

※初回作成時の説明になります。
基本的にはParse上で表示されるフローに従ってください。

スクリーンショット_2015-04-29_午後5_48_34.png

①Test用のXcodeプロジェクトをダウンロードします。

parse-starter-project***というプロジェクトをダウンロードできるので、それをXcodeで開きます。

②ApplicationIdとclientKey追加

AppDelegate.swiftに下記のコードを追加。

Parse.setApplicationId("[ApplicationId]",clientKey:"[clientKey]")

③Runします。

Runした後、
ParseのDashBoard上の画面にある「Test」ボタンを押します。
成功していれば、その旨のメッセージが表示されます。

ここまで5分ほどでできました!

データの扱い方

Parseと連携することができたので、
あとは実際に任意のデータを保存したり、検索したり、削除する方法をみていきます。

データの保存方法

下記のclassNameにテーブル名を指定します。

.saveInBackgroundWithBlockで保存時に
指定したテーブル名が存在すればそのテーブルを取得し、
存在しなければ新しいテーブルを作成します。

下記はnameカラムにArakiageカラムに22を保存する例です。

let testObject = PFObject(className: "TestObject")

testObject["name"] = "Araki"
testObject["age"] = 22

// バックグラウンドでデータをsave
testObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in

    if success {
        println("Object has been saved.")
    }

}

保存したデータの確認方法

「Parse」のDashBoardで確認します。

上部メニューの「Core」タブを選択するとDBの情報を見ることができます。
左のメニューの「Role」、「User」、「TestObject」が存在するテーブルです。

さきほど作成した「TestObject」を選択すると
上で保存したデータを確認できると思います。

スクリーンショット 2015-04-29 午後10.47.48.png

データの取得方法

PFQuery(className: "TestObject")
取得したいテーブル名をclassNameに指定します。

.whereKey.orderByAscending
取得方法をqueryに指定してデータを取得します。

var query: PFQuery = PFQuery(className: "TestObject")
query.whereKey("name", containsString: "Araki")
query.orderByAscending("createdAt")

// バックグラウンドでデータを取得
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
    for object in (objects as! [PFObject]) {

        if(error == nil){
            println(object.objectForKey("name"))
        }
    }
}

データの削除方法

上と同じ方法でデータを取得し、
object.delete()で削除します。

var query: PFQuery = PFQuery(className: "TestObject")
query.whereKey("name", containsString: "Araki")
query.orderByAscending("createdAt")

// バックグラウンドでデータを取得
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
    for object in (objects as! [PFObject]) {

        if(error == nil){
            object.delete() // 削除
            println(object.objectForKey("name"))
        }
    }
}
66
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
66