最近話題のParseを使ってみたが、これはおもしろい。
サーバサイドで複雑な処理をすることはできないっぽいが、サーバを単なるデータ共有用ストレージとして使うなら機能は十分。
そして超簡単に使える。
https://www.parse.com/docs/ios_guide:ParseのiOS Guideのサンプルコードを書き写しながらメモを書いたので公開します。内容はiOS Guideほぼそのまま。
PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];
PFObject *object = [query getObjectWithId:@"6VJQnK64cG"];
self.label.text = [object objectForKey:@"boo"];
self.label.text = object.createdAt.description;
// 再度サーバにデータを読みに行く
[object refresh];
// バックグラウンドスレッドで通信する
[object saveInBackground];
// コールバック付き
[object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
// The gameScore saved successfully.
} else {
// There was an error saving the gameScore.
}
}];
[query getObjectInBackgroundWithId:@"6VJQnK64cG"
block:^(PFObject *gameScore, NSError *error) {
if (!error) {
// The get request succeeded. Log the score
NSLog(@"The score was: %d", [[gameScore objectForKey:@"score"] intValue]);
} else {
// Log details of our failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
// オフライン状態で実行されたら次にオンラインになったときにサーバに書きに行ってくれる
// save系のメソッドは変更されたフィールドだけ送信する
[object saveEventually];
// ある属性をインクリメントしたい場合は以下でできる。incrementKey:byAmount:も使える
[object incrementKey:@"score"];
[object saveInBackground];
// 配列にオブジェクトを追加する。addObjectsFromArray: forKey:も使える。オブジェクトは配列の最後に追加される。
[object addObject:@"obj" forKey:@"key"];
// もうオブジェクトが配列に追加されていたら追加しない。オブジェクトが挿入される位置は保障されないので気をつけること
[object addUniqueObject:@"obj" forKey:@"key"];
// deleteInBackgroundWithBlock:とかもsaveと同じように使える
[object deleteInBackground];