2014-10-30 7 views
0

Я скопировал пример для PFQuery прямо из документов, поместил в него мои имена полей и классов, но он никогда не попадает в завершающий блок.PFQuery findObjectsInBackgroundWithBlock не возвращает

- (void) loadMyWindows { 
    PFQuery *query = [PFQuery queryWithClassName:@"RGWindow"]; 
    [query whereKey:@"creatorID" equalTo:me.facebookID]; 

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

     // it never gets here... 

     if (!error) { 
      NSLog(@"Successfully retrieved %d objects.", objects.count); 
     for (PFObject *object in objects) { 
      NSLog(@"%@", object.objectId); 
     } 

     [self gotoMain]; 
    } else { 
     NSLog(@"Error: %@ %@", error, [error userInfo]); 
    } 
}]; 

Я проверил много раз ... Есть несколько объектов RGWindow в браузере данных, они имеют поле «creatorID», и их ACL скажут Public Read.

Я в тупике.

+0

Вы уверены, что функция называется вообще? Вы пытались поставить точку останова в верхней части функции, чтобы убедиться, что она вызвана? –

+0

Да, он находит findObjectsInBackgroundWithBlock и просто зависает. – pizzafilms

+0

Я не сталкиваюсь с той же глупой проблемой - она ​​просто висит! Я посмотрю, что я узнаю. –

ответ

0

Как оказалось, в моем подклассе PFObject был метод init, который не допускается, что явно вызвало хаос в этом случайном месте. Возможно, мне следовало прочитать документы больше.

1

Наконец-то я нашел решение: УБЕДИТЕСЬ, что все ваши объекты создаются при попытке вызова. Если у вас что-то пустое, оно зависает перед запросом и блокирует - он просто плоский, останавливает выполнение кода для этого конкретного запроса. Например:

NSLog(@"test1"); 
PFQuery *dailyChallengesQuery = [GrowthChallenges query]; 
NSLog(@"test2"); 
[dailyChallengesQuery whereKey:kParse_GrowthChallengesGrowthRole equalTo:currentRole]; 
//When currentVirtue = nil, THIS JUST HANGS - nothing below here is called properly 
[dailyChallengesQuery whereKey:kParse_GrowthChallengesGrowthVirtue equalTo:currentVirtue]; 
NSLog(@"test3"); 
[dailyChallengesQuery getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) { 
    NSLog(@"test4"); 
    currentChallenge = (GrowthChallenges *)object; 
    [self setupTableView]; 
}]; 

Когда currentVirtue равен нулю, он записывает:
test1
test2

Однако, когда currentVirtue установлен правильно, он записывает:
test1
test2
test3
test4

Проверьте свои me.facebookID, чтобы убедиться, что он не равен нулю, прежде чем настраивать запрос.