日々精進

新しく学んだことを書き留めていきます

ParseのiOS Guide抄訳3

    // ↓を実行するとcurrentUserに紐付くpostすべてがとってこれる
    [[relation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (error) {
            // There was an error
        } else {
            // objects has all the Posts the current user liked.
        }
    }];
    PFQuery *restrictedQuery = relation.query;
    // restrictedQueryに対して検索条件を設定できる

    // PFObjectはkey-value形式でデータを持つ。valueとしてはNSString, NSNumber, NSDate, NSData, NSNull, NSArray, NSDictionary, PFObjectが渡せる
    // PFObjectのサイズはせいぜい128KBまでにすべき。画像などはPFFileを使って保存すること。

    // Queries セクション
    // PFQueryは自動的にクエリをキャッシュしてくれる(検索結果をキャッシュしてくれるんだろうけど、生存期間とかは不明)

    PFQuery *basicQuery = [PFQuery queryWithClassName:@"GameScore"];
    [basicQuery whereKey:@"playerName" equalTo:@"Dan Stemkoski"];
    [basicQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            // The find succeeded.
            NSLog(@"Successfully retrieved %d scores.", objects.count);
        } else {
            // Log details of the failure
            NSLog(@"Error: %@ %@", error, [error userInfo]);
        }
    }];

    // findObjectsメソッドは同期的に実行されるのでメインスレッドで実行しないこと
    NSArray* scoreArray = [basicQuery findObjects];
    // 検索結果の数を制限できる。デフォルトは100。最大1000
    basicQuery.limit = 10;
    // getFirstObjectInBackgroundはlimitを1にして検索するのと同じ

    // 検索結果の先頭からN番目までを飛ばす
    basicQuery.skip = 10;

    // ソートする
    [basicQuery orderByAscending:@"score"];
    // ソートキーを複数設定可能
    [basicQuery addAscendingOrder:@"name"];

    // PFQueryのwhereKey系メソッドで検索条件を設定できる=, !=, >, <, in, not inなど一通りある。
    // whereKeyExistsでキーがあるかどうかを調べられる。
    [basicQuery whereKeyExists:@"key"];