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
에 여분의 키를 추가하는 방법은 무엇입니까?