PFQuery findObjectsInBackgroundWithBlock不返回

时间:2014-10-30 06:52:42

标签: ios parse-platform pfquery

我从文档中复制了PFQuery的示例,将我的字段和类名放入其中,但它从未到达completionBlock。

- (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说公开阅读。

我很难过。

2 个答案:

答案 0 :(得分:1)

我终于找到了解决方案:确保在尝试呼叫之前实例化所有对象。如果你有任何null,它会在查询之前挂起并阻止 - 它只会停止运行该特定查询的代码。例如:

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变量以确保它是非零的。

答案 1 :(得分:0)

事实证明,我的PFObject子类有一个不允许的init方法,这显然在这个随机的地方造成了破坏。也许我应该更多地阅读文档。