我从文档中复制了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说公开阅读。
我很难过。
答案 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方法,这显然在这个随机的地方造成了破坏。也许我应该更多地阅读文档。