2016-08-19 2 views
0

테이블보기와 검색 표시 줄이 있습니다. 나는 여러 개의 키 값을 검색하고 이에 따라 테이블을 필터링해야한다. 내가 [NSExpression expressionForKeyPath:@"STOCKUNIT"];에 대한 objectForKey:@"text" 얻을 수있는 값을 추가하는 방법,NSExpression을 키 경로로 가져 오는 방법은 무엇입니까?

cell.lblSku.text = [[dict objectForKey:@"STOCKUNIT"] objectForKey:@"text"]; 
cell.lblProductMajor.text = [[dict objectForKey:@"PRODUCTMAJORGROUP"] objectForKey:@"text"]; 

내 질문은 : 나는

- (void)updateSearchResultsForSearchController 
{ 
    NSString *searchText = self.searchBr.text; 
    NSMutableArray *searchResults = [self.arrayPriceList mutableCopy]; 
    NSString *strippedString = [searchText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    NSArray *searchItems = nil; 
    if (strippedString.length > 0) { 
     searchItems = [strippedString componentsSeparatedByString:@" "]; 
    } 
    NSMutableArray *andMatchPredicates = [NSMutableArray array]; 

    for (NSString *searchString in searchItems) { 
     NSMutableArray *searchItemsPredicate = [NSMutableArray array]; 

     // Below we use NSExpression represent expressions in our predicates. 
     // NSPredicate is made up of smaller, atomic parts: two NSExpressions (a left-hand value and a right-hand value) 

     // Product SKU 
     NSExpression *lhsSKU = [NSExpression expressionForKeyPath:@"STOCKUNIT"]; 
     NSExpression *rhsSKU = [NSExpression expressionForConstantValue:searchString]; 
     NSPredicate *finalPredicateSKU = [NSComparisonPredicate 
              predicateWithLeftExpression:lhsSKU 
              rightExpression:rhsSKU 
              modifier:NSDirectPredicateModifier 
              type:NSContainsPredicateOperatorType 
              options:NSCaseInsensitivePredicateOption]; 
     [searchItemsPredicate addObject:finalPredicateSKU]; 

     // Product Major group 
     NSExpression *lhsProductMajorGroup = [NSExpression expressionForKeyPath:@"PRODUCTMAJORGROUP"]; 
     NSExpression *rhsProductMajorGroup = [NSExpression expressionForConstantValue:searchString]; 
     NSPredicate *finalPredicateMajorGroup = [NSComparisonPredicate 
              predicateWithLeftExpression:lhsProductMajorGroup 
              rightExpression:rhsProductMajorGroup 
              modifier:NSDirectPredicateModifier 
              type:NSContainsPredicateOperatorType 
              options:NSCaseInsensitivePredicateOption]; 
     [searchItemsPredicate addObject:finalPredicateMajorGroup]; 
     // at this OR predicate to our master AND predicate 
     NSCompoundPredicate *orMatchPredicates = [NSCompoundPredicate orPredicateWithSubpredicates:searchItemsPredicate]; 
     [andMatchPredicates addObject:orMatchPredicates]; 
    } 

    // match up the fields of the Product object 
    NSCompoundPredicate *finalCompoundPredicate = 
    [NSCompoundPredicate andPredicateWithSubpredicates:andMatchPredicates]; 
    searchResults = [[searchResults filteredArrayUsingPredicate:finalCompoundPredicate] mutableCopy]; 
    // hand over the filtered results to our search results table 
    self.arrayFilteredPriceList = searchResults; 
} 

그러나 cellForRowAtIndexPath에, 나는 다음과 같이 값을 얻어야를 필터링하려면 다음 코드를 사용합니까? expressionForKeyPath에 여분의 키를 추가하는 방법은 무엇입니까?

답변

0

제가

NSExpression *lhsProductName = [NSExpression expressionForKeyPath:@"PRODUCTNAME.text"]; 
expressionForKeyPath

는 .text에 추가하여이를 해결
관련 문제