Я установил NSRuleEditor
для пользователя, чтобы он редактировал правила для фильтрации массива, у меня нет проблем для пользователя, чтобы редактировать правила, но я не смог найти способ отобразить правила, которые я сохранил для пользователя, есть ли у кого-нибудь есть идеи?
У меня есть правила, подготовленные для каждой строки и возвращенные из методов делегата. Когда пользователь нажал кнопку «+», новое правило появилось так, как я ожидал
#pragma mark - NSRuleEditorDelegate
- (NSInteger)ruleEditor:(NSRuleEditor *)editor numberOfChildrenForCriterion:(nullable id)criterion withRowType:(NSRuleEditorRowType)rowType {
RuleCriterion *ruleCriterion = criterion;
if (rowType == NSRuleEditorRowTypeCompound) {
if (ruleCriterion == nil) {
return self.compoundCriteria.count;
} else {
return ruleCriterion.numberOfChildren;
}
} else {
if (ruleCriterion == nil) {
return self.simpleCriteria.count;
} else {
return ruleCriterion.numberOfChildren;
}
}
}
- (id)ruleEditor:(NSRuleEditor *)editor child:(NSInteger)index forCriterion:(nullable id)criterion withRowType:(NSRuleEditorRowType)rowType {
RuleCriterion *ruleCriterion = criterion;
if (rowType == NSRuleEditorRowTypeCompound && ruleCriterion == nil) {
return self.compoundCriteria[index];
} else if (rowType == NSRuleEditorRowTypeSimple && ruleCriterion == nil) {
return self.simpleCriteria[index];
} else {
return [ruleCriterion childAtIndex:index];
}
}
- (id)ruleEditor:(NSRuleEditor *)editor displayValueForCriterion:(id)criterion inRow:(NSInteger)row {
RuleCriterion *ruleCriterion = criterion;
return ruleCriterion.displayValue;
}