日々精進

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

ParseのiOS Guide抄訳2

    // オブジェクト間の関連を設定する方法。
    PFObject *myPost = [PFObject objectWithClassName:@"Post"];
    [myPost setObject:@"I'm Hungry" forKey:@"title"];
    [myPost setObject:@"Where should we go for lunch?" forKey:@"content"];

    PFObject *myComment = [PFObject objectWithClassName:@"Comment"];
    [myComment setObject:@"Let's do Sushirrito." forKey:@"content"];
    // 親オブジェクトへの参照を設定する
    [myComment setObject:myPost forKey:@"parent"];
    // objectIdで親オブジェクトを指定できる
    [myComment setObject:[PFObject objectWithoutDataWithClassName:@"Post" objectId:@"1zEcyElZ80"] forKey:@"parent"];
    // myPostとmyCommentの両方がsaveされる
    [myComment saveInBackground];

    // 関連オブジェクトの取り方
    PFQuery *q = [PFQuery queryWithClassName:@"Comment"];
    PFObject *fetchedComment = [q getObjectWithId:@"1zEcyElZ80"];
    PFObject *post = [fetchedComment objectForKey:@"parent"];
    // 関連オブジェクトはデフォルトでは取得されないのでこんな感じで自分でとってくる必要がある。
    [post fetchIfNeededInBackgroundWithBlock:^(PFObject *obj, NSError *error) {
        NSString *title = [post objectForKey:@"title"];
    }];

    // PFRelationオブジェクトを使うと多対多の関連を表現できる。PFRelationは遅延評価するので必要なデータしか取ってこない。
    // PFObjectのvalueの一つとして配列を持たせると、配列全体のデータを一度に取ってくるので注意。
    // likesリレーションを通じてuserとpostをつなげる例
    PFUser *user = [PFUser currentUser];
    PFRelation *relation = [user relationforKey:@"likes"];
    [relation addObject:post];
    // 削除はremoveで
//    [relation removeObject:post];
    [user saveInBackground];