0

我正在尝试在我的 Parse 数据库中查询用户,并在当前用户和被查询用户之间建立友谊。我已经阅读了很多 Parse 文档和教程,但仍然无法正常工作。我不断收到 warnParseOperationOnMainThread 错误,并且我尝试使用 Parse 推荐的调试实践来解决该错误,但它在堆栈中的一些我不理解的随机代码行上中断。如果您能告诉我出了什么问题,或者有另一种实现相同功能的方法,我将非常感谢您的帮助。谢谢!以下是我的查询代码不起作用:

-(void)queryForFriend { NSString *searchedFriendName = 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];
}

}

4

1 回答 1

1

[friendQuery findObjects]是一个线程阻塞操作,它将阻塞你的主线程,直到网络查询完成。您应该使用该findObjectsInBackgroundWith...方法(我忘记是 withBlock 还是 withCompletion) - 您提供了一个将在网络查询完成后执行的objective-c 块(一个闭包),但同时您的应用程序将继续运行。

如果您还没有阅读过 Apple 的异步编程概念参考,那将是值得的。

于 2014-08-07T02:30:24.463 回答