0
我最近开始使用Parse SDK for iOS用户注册/登录。我遵循Parse官方文档中提供的教程,并且一切正常。PFQuery在不使用委托的情况下返回数据后调用方法
但是,现在我试图自定义一些查询。我希望在我从另一个表中收到一些数据后执行一个操作。对于这一点,我使用:
[PFQuery findObjectsInBackgroundWithBlock^(BOOL return, NSError *error)].
当此块成功执行,块里面,我打电话给我的委托的方法,像这样:
PFQuery *query = [PFQuery queryWithClassName:@"Requests"];
[query whereKey:kUserEmail equalTo:[dataDict objectForKey:kUserEmail]];
__block NSString *status = nil;
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
// Do something with the found objects
for (PFObject *object in objects) {
NSLog(@"%@", object.objectId);
status = object[@"status"];
if([del respondsToSelector:@selector(redirectToMyMethod:)])
{
[del redirectToMyMethod:status];
}
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
我想知道是否有任何其他方式实现上述功能?难道我不能让我的程序等待,直到这些返回已被提取?到目前为止,如果我在没有委托的情况下尝试这样做,我的程序就会以不正确的返回值向前移动,并且稍后会获取此PFQuery对象的结果。我想要做这样的事情:
+ (BOOL) isUserInRequest{
PFQuery *query = [PFQuery queryWithClassName:@"Requests"];
[query whereKey:kUserEmail equalTo:[PFUser currentUser].username];
__block BOOL status = NO;
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if(!error)
{
if([objects count] > 0)
{
status = YES;
}
}
}];
return status;
}
但正如你所看到的,我总是得到NO的返回值,和正确的状态值将在后面进行更新。任何人都可以帮助我吗?
那么你想要返回状态布尔值?这是问题吗? – 2014-12-08 05:48:41
是的,我想返回一个由PFQuery调用确定的布尔值。 – 2014-12-08 05:55:06
看看这个答案:http://stackoverflow.com/a/26607458/2274694 – 2014-12-08 06:29:49