2014-01-19 2 views
1

조리법 작업 및 조리법 이름보다는 조리법 항목을 기준으로 쿼리 (검색)하고 싶습니다.Parse.com 문자열이 배열에 포함되어 있는지 쿼리

예를 들어 여러 항목에 Chicken이 포함될 수 있습니다. 닭고기를 검색하고 요리법에 닭고기가 들어있는 요리법 이름을보고 싶습니다.

는 여기에 내가 시도 내용은 다음과 같습니다

- (void)filterResults:(NSString *)searchTerm 
{ 
    PFQuery * query = [PFQuery queryWithClassName:self.parseClassName]; 
    NSArray * ingredientArray = [self.profileObject objectForKey:@"ingredients"]; 
    [query whereKey:searchTerm containedIn:ingredientArray]; 

    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (error) 
     { 
      NSLog(@"Error: %@ %@", error, [error userInfo]); 
     } 
     else 
     { 
      [self.searchResults removeAllObjects]; 
      [self.searchResults addObjectsFromArray:objects]; 
      [self.searchDisplayController.searchResultsTableView reloadData]; 
     } 
    }]; 

} 

이 코드는 아무 것도 반환되지 않으며 나는 오류를 얻을 수 없습니다.

검색어를 설정하는 올바른 방법을 알아내는 데 어려움이 있습니다.

쿼리 내에서 쿼리로 해결해야합니까?

의미

최초의 성분을 통해 쿼리 한 다음 SEARCHTERM를 포함하는 조리법의 이전 쿼리를 기반으로 레시피 이름을 표시하는에 쿼리합니다.

+0

제발 우리가 추측하지 마십시오. 무슨 문제 있니? 게시 한 코드는 어떻게됩니까? – rmaddy

답변

2

나는 당신이 [query whereKey:containedIn:] 방법을 오용하고 있다고 생각합니다. 이것은 사용자가 지정하는 키에 대한 오브젝트가 사용자가 제공하는 배열에 들어있는 모든 PFObject를 조회하는 데 사용됩니다. 모든 조리법 항목에 대해 새 키를 만들지 않는 한, 사용자의 개체에 "치킨 (Chicken)"키가 없기 때문에 이것은 목적을 위해 작동하지 않습니다. 먼저

, 난 당신이 다음 필드로 구문 분석에 RecipeIngredient 클래스를 사용하는 것이 좋습니다 : 그 Recipe 객체에

  • 포인터 (레시피) 조리법 // 포인터
  • 번호 양 // 방법 단위
  • 많은 등 등
  • 문자열 단위 // 컵, g,
  • 문자열 성분 // 우유, 밀가루,

지금, 당신은 단순히 지금처럼 RecipeIngredient 클래스를 조회 할 수 있습니다

PFQuery * query = [PFQuery queryWithClassName:"RecipeIngredient"]; 
[query whereKey:"ingredient" equalTo:searchTerm]; 
[query includeKey:"recipe"]; //Fetches the Recipe data via the pointer 
[query findObjectsInBackgroundWithBlock:^(NSArray *recipeIngredientObjects, NSError *error) { 
    if (!error) { 
     NSArray *recipes = [recipeIngredientObjects valueForKey:@"recipe"]; 
     //update table data as needed 
    } else { 
     // Log details of the failure 
     NSLog(@"Error: %@ %@", error, [error userInfo]); 
    } 
}]; 
+0

감사합니다. 나는 지난 밤에 더 많은 것을 파헤 쳤다. 그리고 내가 발견 한 것은 searchTerm이 단어 - 어 - 단어와 일치해야한다는 것이다. 그래서 "밀가루 한 컵"을 가지고 있다면 그 모든 것을 입력해야합니다. 이상적으로 밀가루만을 검색하고 그 결과를 얻고 싶습니다. –

+0

특정 성분명을 검색 할 수 있도록 구문 분석을 설정하는 방법을 편집하여 답했습니다. – bobbyrehm

+0

@ 루케 이르빈이 문제에 대한 해결책을 찾았습니까? 나는 또한이 문제를 겪고있다. –

1

난 내가 대답을 공유 할 것이라고 생각 언젠가 그래서 작년에이 문제를 가지고 있었다.

[query whereKey:@"ingredient" matchesRegex:searchTerm modifiers:@"i"]; 

그렇게하는 것이 좋습니다. 대소 문자를 구분하는 데 도움이됩니다.

관련 문제