Обработка отношения «один ко многим» в Parse в iOS

У меня есть этот сценарий:

У одного поста может быть много комментариев. Поэтому я создаю класс Post и класс Comment в Parse.com. Вот определения или класс и их данные:

Один пост:

введите здесь описание изображения

У поста два комментария:

введите здесь описание изображения

Я хочу получить сообщение с первым комментарием от определенного автора. Вот мой код:

PFQuery *query = [PFQuery queryWithClassName:@"Post"];
[query orderByAscending:@"createdAt"];

[query findObjectsInBackgroundWithBlock:^(NSArray *posts, NSError *error) {

    for (PFObject* obj in posts) {

        PFRelation* comments = [obj objectForKey:@"comment"];
        PFQuery* theQuery = [comments query];
        [theQuery whereKey:@"author" equalTo:@"John"];
        [theQuery getFirstObjectInBackgroundWithBlock:^(PFObject *comment, NSError *error) {

            NSLog(@"Post title=%@,body=%@", [obj objectForKey:@"title" ],[obj objectForKey:@"body"]);
            NSLog(@"Comment content=%@",[comment objectForKey:@"content"]);
        }];
    }
}];

Я не думаю, что это эффективно, хотя и работает. И трудно сказать, когда запросы будут завершены, потому что есть два вложенных асинхронных вызова.

У кого-нибудь есть лучшее решение? Спасибо.

ИЗМЕНИТЬ:

Причина, по которой я думаю, что это неэффективно, заключается в том, что есть вложенные запросы. Но я не знаю, как получить то, что я хочу, используя Relation. Может быть, я не должен использовать Relation? Вместо этого я должен назначить ObjectId Post для класса Comment? (Но этот метод не так прост, как Relation при вводе данных)


person Bagusflyer    schedule 07.11.2014    source источник


Ответы (1)


Тип отношения рекомендуется для многих ко многим, в то время как для одного ко многим рекомендуются «указатель» и «массив».

person Bishoy Hanna    schedule 01.09.2015