Parse.com iOS queryWithClassName适用于某些人而非其他人,为什么?

时间:2012-10-19 18:15:37

标签: ios parse-platform

我有几个类,其中一个是User,另一个是TestObject。如果我查询用户(我通过试验和错误认识它应该被查询为_User)我得到正确的记录计数,但是如果我查询TestObject我得到0.这对于某些类而不是所有类都会发生。那是为什么?

PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
             if (error) {
                 NSLog(@"Error: %@ %@", error, [error userInfo]);
             } else {
                 NSLog(@"Successfully retrieved %d scores.",objects.count);
             }
}];

返回:

  

2012-10-19 13:55:03.239   TableViewParseDotCom [5497:10103]   成功检索了24个分数。

但如果我更改了这一行,请:

  

PFQuery * query = [PFQuery   queryWithClassName:@ “的TestObject”];

我得到0分,但我知道我有45条记录。为什么呢?

3 个答案:

答案 0 :(得分:1)

最常见的原因是您查询了无法访问的对象。仔细检查如果这些对象具有ACL,则以同一用户身份登录。

答案 1 :(得分:1)

除了检查您要查询的对象的ACL之外,您还应该查看Parse仪表板中的Settings。如果您不想强制用户登录,请确保在“开启”上设置“允许匿名用户”。

此外,在TestObject对象的数据浏览器中,单击“更多”按钮,然后从下拉列表中选择“权限”。确保您的设置对于“查找”和“获取”是正确的 - 设置为公共,没有角色/用户开始帮助您进行调试。这应该确保您可以查询TestObject对象。

答案 2 :(得分:0)

不要忘记设置读取权限。这些可以编程设置如下:

PFACL * defaultACL = [PFACL ACL];
[defaultACL setPublicReadAccess:YES];
[PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES];

我刚刚运行了两个查询,一个在我的用户上,一个在另一个类上(imageClass),它们都返回正常。

用户查询:

// Remember for users we can run a user query instead of needing to specify the class
PFQuery * userQuery = [PFUser query];
[userQuery whereKey:@"username" equalTo:currentUser.username];

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

}];

其他课程查询:

PFQuery * imageQuery = [PFQuery queryWithClassName:@"bImageClass"];

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

}];

这是我在Parse中的课程图片。

parsemenu

因此,我确保您正确设置了公共访问权限(在我的项目中,这是在查询运行之前设置的),因为您用于查询的代码看起来很好。