我有几个类,其中一个是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条记录。为什么呢?
答案 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中的课程图片。
因此,我确保您正确设置了公共访问权限(在我的项目中,这是在查询运行之前设置的),因为您用于查询的代码看起来很好。