2013-12-26 6 views
1

Я пытаюсь отфильтровать список продуктов из ответа json. Для левого выражения «Статус» правой стороны мне нужно понизить. поэтому я использовал правильное выражение. При фильтрации этого json, используя nspredicate, он не работает из-за пробела. Пожалуйста, помогите мне достичь этого.Как решить проблемы с пространством при использовании nspredicate в объекте c?

NSArray *Mainarray;// Suppose this contains the response as "status"="Checked In" for 1 product and for other product "status"="Lost/Missing" 

NSArray *[email protected][[NSExpression expressionForKeyPath:@"status"]]; 

NSArray *[email protected][[NSExpression expressionForKeyPath:@"Awaiting inputs"],[NSExpression expressionForKeyPath:@"Checked In"],[NSExpression expressionForKeyPath:@"Checked out"],[NSExpression expressionForKeyPath:@"Lost/Missing"],[NSExpression expressionForKeyPath:@"xxx Testing/Primary System"],[NSExpression expressionForKeyPath:@"Sold To"],[NSExpression expressionForKeyPath:@"closed"],[NSExpression expressionForKeyPath:@"Used for Parts"]]; 

NSArray *operators= @[@(NSEqualToPredicateOperatorType),@(NSNotEqualToPredicateOperatorType)]; 

NSArray *compoundTypes = @[@(NSAndPredicateType),@(NSOrPredicateType),@(NSNotPredicateType)]; 

NSPredicateEditorRowTemplate *template; 

template=[[NSPredicateEditorRowTemplate alloc]initWithLeftExpressions:left rightExpressions:right modifier:NSDirectPredicateModifier operators:operators options:(NSCaseInsensitivePredicateOption | NSDiacriticInsensitivePredicateOption)]; 

compoundtemp = [[NSPredicateEditorRowTemplate alloc] initWithCompoundTypes:compoundTypes]; 

[predicateEditor setRowTemplates:@[template,compoundtemp]]; 


NSPredicate *predicate=[predicateEditor predicate]; 

NSArray *resultArray=[Mainarray filteredArrayUsingPredicate:predicate]; 

ответ

3

Я немного угадывание (потому что я не создал тестовый проект, чтобы проверить это), но «правые» являются постоянными величинами, а не ключевые пути. Таким образом, вы должны заменить

[NSExpression expressionForKeyPath:@"Awaiting inputs"] 

по

[NSExpression expressionForConstantValue:@"Awaiting inputs"] 

в NSArray *[email protected][ ... ], а так же для других возможных значений.

+0

Большое вам спасибо. Он отлично работает ... – Suneetha

+0

@Suneetha: Добро пожаловать! –