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上で表示されるフローに従ってください。
①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
カラムにAraki
、age
カラムに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」を選択すると
上で保存したデータを確認できると思います。
データの取得方法
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"))
}
}
}