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