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

Я пытаюсь запросить пользователей в моей базе данных Parse и создать дружбу между текущим пользователем и запрашиваемым пользователем. Я просмотрел много документации и учебников по Parse, но я до сих пор не могу заставить его работать. Я продолжаю получать ошибку warnParseOperationOnMainThread, и я пытался использовать рекомендованные Parse методы отладки для этой ошибки, но она ломается на некоторой случайной строке кода из стека, которую я не понимаю. Если бы вы могли сказать мне, что не так или у вас есть другой метод реализации той же функциональности, я был бы очень признателен за помощь. Спасибо! Ниже приведен код моего запроса, который не работает:

- (void) queryForFriend {NSString * seekFriendName = self.addFriendTextField.text;

PFQuery *friendQuery = [PFUser query];
[friendQuery whereKey:@"username" equalTo:searchedFriendName];
friendList = [friendQuery findObjects];
if(friendList.count > 0)
{
    PFUser *newFriend = friendList.lastObject;

    PFRelation *friendship = [[PFUser currentUser] objectForKey:@"friendShip"];
    [friendship addObject:newFriend];
    [[PFUser currentUser] saveInBackground];
}

}

1 ответ

Решение

[friendQuery findObjects] является операцией блокировки потока, которая блокирует ваш основной поток до тех пор, пока не завершится сетевой запрос. Вы должны использовать findObjectsInBackgroundWith... метод (я забываю, является ли это withBlock или withCompletion) - вы предоставляете блок target-c (замыкание), который будет выполняться после завершения сетевого запроса, но в то же время ваше приложение продолжит работать.

Если вы еще этого не сделали, стоит прочитать справочник по понятиям асинхронного программирования Apple.

Другие вопросы по тегам