Почему PFRelation сохраняется путем сохранения объекта PFUser?

поэтому у меня возникли проблемы с пониманием того, как сохраняется PFRelation, у меня есть этот код:

PFUser *user = [PFUser currentUser];
PFRelation *relation = [user relationForKey:@"likes"];
[relation addObject:post];
[user saveInBackground];

Почему при обновлении пользователя, т.е. [user saveInBackground], обновляется поле PFRelation «лайки» для этого пользователя? Использует ли это один вызов API или [отношение addObject: post]; также требуется вызов API?

Любая помощь будет принята с благодарностью.

Спасибо


person Kex    schedule 11.01.2015    source источник
comment
Он обновляется, потому что вы говорите об этом. Это похоже на создание PFObject, ничего не произойдет, пока вы не сохраните объект и его свойства. В вашем случае используется 1 запрос API   -  person soulshined    schedule 11.01.2015
comment
@soulshined, вы должны опубликовать свой комментарий в качестве ответа, так как он правильно отвечает на его вопрос.   -  person Timothy Walters    schedule 12.01.2015


Ответы (1)


В вашем случае при определенных обстоятельствах используется 1 запрос API.

Взгляните на PFObject [прямо с Parse.com]:

// Create the post
PFObject *myPost = [PFObject objectWithClassName:@"Post"];
myPost[@"title"] = @"I'm Hungry";
myPost[@"content"] = @"Where should we go for lunch?";

// Create the comment
PFObject *myComment = [PFObject objectWithClassName:@"Comment"];
myComment[@"content"] = @"Let's do Sushirrito.";

// Add a relation between the Post and Comment
myComment[@"parent"] = myPost;

Здесь вы устанавливаете атрибуты или свойства для PFObject, но ничего не происходит, пока вы его не сохраните, вы можете делать что угодно с объектом, например изменять его, обновлять, не имеет значения, но с точки зрения бэкэнда, он не будет обновляться, пока вы не скажете это то место, где в игру вступает сохранение:

[myComment saveInBackground];

Короче говоря, вы можете добавлять отношения, указатели и многочисленные параметры в течение всего дня, но ничего не произойдет, пока вы не скажете, чтобы это произошло: [saveInBackground];

Поскольку вы сделали это прямой корреляцией с пользователем, он сохраняет его для этого пользователя, потому что вы сказали. Поскольку вы указали отношение к пользователю, после сохранения свойств пользователя отношение также будет сохранено. Однако это не создает дополнительных запросов API.

person soulshined    schedule 12.01.2015