2012-10-19 4 views
2

하나는 User이고 다른 하나는 TestObject 인 여러 클래스가 있습니다. 만약 내가 사용자가 쿼리 (재판을 배웠습니다 _User로 쿼리해야합니다 오류) & 오류가 발생했습니다. 정확한 레코드 수를 얻을 수 있지만 TestObject를 쿼리하면 0 얻을.이 일부 클래스 있지만 모든 않습니다. 왜 그런가요?Parse.com iOS queryWithClassName은 다른 사람이 아닌 일부 사용자에게 적합합니다. 이유가 무엇입니까?

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); 
      } 
}]; 

이 반환 55 :

2012년 10월 19일 13 03.239 TableViewParseDotCom을 [5497 : 10103] 성공적 24 스코어를 검색.

하지만 난에 라인을 변경하는 경우 :

PFQuery * 쿼리 = [PFQuery queryWithClassName : @ "TestObject"];

나는 0 카운트를 얻지 만 45 레코드가 있다는 것을 알고 있습니다. 왜?

+0

웹 기반 대시 보드를 사용하여 구문 분석시 기록을 검사 해 보셨습니까? 이것은 도움이 될 수 있습니다. – CuriousRabbit

+0

예, 데이터가 잘 보이게됩니다. – sAguinaga

+0

TestObject에 문제가있는 이유를 모르지만 사용자를 쿼리하려면'[PFUser query]'(https://www.parse.com/docs/ios/api/Classes/PFUser.html##)를 사용해야합니다. // api/name/query) – user94154

답변

1

가장 일반적인 이유는 액세스 권한이없는 개체를 쿼리했기 때문입니다. 이 오브젝트에 동일한 사용자로 로그인 한 ACL이 있는지 다시 확인하십시오.

+0

프로젝트 소유자는 사용자로 로그인하지 않아도됩니다. 맞습니까?내 데이터 세트에 대한 통계를 작성하려면이 데이터를 일반적으로 쿼리 할 수 ​​있어야합니다. 그래서, 나는 나의 모든 기록이 무엇인지를 볼 수 있어야한다. 그런 다음 특정 사용자에 대한 세부 정보를 더 자세히 보려면 ​​키가 일부 값과 일치하는 쿼리도 올바르게 작동해야합니다. ACL 제안을 다시 한번 살펴 보겠습니다. – sAguinaga

+0

iOS는 귀하가 앱의 소유자임을 알 수있는 방법이 없습니다. 데이터 브라우저는 모든 보안을 우회하여 모든 객체를 나타냅니다. REST API를 사용하는 경우 -X-Parse-REST-API-Key 헤더 대신 -X-Parse-Master-Key 헤더를 사용할 수 있습니다 (물론 마스터 키로 키를 변경). 생성하려는 분석에 대한 액세스 제한 –

+0

역할 (https://parse.com/docs/ios_guide#roles)은 보안을 유지하면서이 문제를 해결할 수있는 방법입니다. "관리자"역할을 만들고 관리자 역할에 대한 읽기 액세스를 허용하도록 기본 ACL을 설정하십시오. 그런 다음이 글로벌 액세스가 필요한 역할에 모든 사용자를 추가 (나중에 제거) 할 수 있습니다. –

1

쿼리하는 개체에 대한 ACL을 검사하는 것과 마찬가지로 Parse 대시 보드의 설정을 살펴 봐야합니다. 사용자가 강제로 로그인하지 않도록하려면 "익명 사용자 허용"이 켜짐으로 설정되어 있는지 확인하십시오.

또한 TestObject 개체의 데이터 브라우저에서 "추가"단추를 클릭 한 다음 드롭 다운에서 "사용 권한"을 선택하십시오. "찾기"및 "가져 오기"에 대한 설정이 올바른지 확인하십시오. 즉, 역할/사용자없이 공개로 설정하여 디버깅을 도울 수 있습니다. 그러면 TestObject 객체를 쿼리 할 수 ​​있습니다.

0

읽기 권한을 설정하는 것을 잊지 마십시오. 난 그냥 두 개의 질의, 다른 클래스 (을 Imageclass) 내 사용자에, 하나를 실행

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

그들은 모두 잘 돌아 : 다음은 프로그래밍 방식으로 다음과 같이 설정할 수 있습니다.

사용자 쿼리

// 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) { 

}]; 

는 구문 분석에서 내 수업의 사진입니다.

parsemenu

그래서 난 당신이 코드대로 잘 보이는 쿼리에 사용하는 (내 프로젝트에서이이 쿼리를 실행하기 직전에 설정)이 올바르게 설정 공공 액세스 할 수 있는지 확인합니다.

관련 문제