2013-08-27 2 views

답변

4

패턴 일치 프로그램은 URL 쿼리 문자열의 패턴과 일치시킬 수 없습니다. 쿼리의 모든 내용은 별도로 처리해야합니다. URL 경로에 대해 패턴 일치를 수행 한 다음 패턴이 일치하는 경우 매개 변수를 쿼리하고 처리해야합니다.

이 패턴 일치 제한은 삭제 처리 범위 외에도 적용됩니다.

따라서 패턴을 /api/rest/productionparameters과 일치하도록 설정하십시오. 일치하는 항목을 얻으려면 을 URL에서 가져오고 싶습니다. 그런 다음 componentsSeparatedByString:을 사용하여 쿼리 매개 변수를 키 값 쌍으로 분할 한 다음 equipment을 찾을 때까지 각 쌍을 처리하고 id을 추출 할 수 있습니다.

덧붙여 말하자면, 패턴 매개 변수를 equipment_id으로 설정했기 때문에 패턴은 결코 [argsDict objectForKey:@"id"]을 반환하지 않습니다.


은 ... 당신은 아마 배열이 너무 계산에 대한 몇 가지 검사를 추가 할, 그래서 확인 아이 패드에 입력 :

[objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) { 
    RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"/api/rest/productionparameters"]; 

    NSDictionary *argsDict = nil; 
    BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict]; 
    NSString *productionParameterID; 

    if (match) { 

     NSArray queryItems = [[URL query] componentsSeparatedByString:@"&"]; 

     for (NSString *item in queryItems) { 

      NSArray *keyValPair = [item componentsSeparatedByString:@"="]; 

      if ([keyValPair[0] isEqualToString:@"equipment"]) { 
       productionParameterID = keyValPair[1]; 
       NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"ProductionParameter"]; 
       fetchRequest.predicate = [NSPredicate predicateWithFormat:@"identifier = %@", @([productionParameterID integerValue])]; // NOTE: Coerced from string to number 
       fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES] ]; 

       return fetchRequest; 
      } 
     } 
    } 

    return nil; 
}]; 
+0

이 작업을 수행하는 방법에 대한 자세한 정보를 제공해 주시겠습니까? 나는이 URL/매칭 물건에 상당히 새로운 것이다. – abisson

+0

약간의 샘플 코드 – Wain

+0

이 작업을 다시 시도하려고합니다 ... URL/api/rest/productionparameters (ProductionParameters 개체에 매핑 됨)를 사용하여 개체를 가져올 수 있는지 궁금합니다. addFetchRequestBlock은 ProductionParameters 객체 만 비교하거나 ProductionParameters의 propertyMapping도 비교합니까? – abisson

1

사용 [URL relativeString] 대신 [URL relativePath]을 relativepath를 쿼리 문자열을 생략한다.

matchesPath:tokenizeQueryStrings:YES은 전달 된 사전에 매개 변수를 삽입합니다.