Используя предикаты на контроллере массива к связанным с фильтром объектам

В настоящее время вы изменяете объект todo в вашей функции completeTodo. Если вместо этого вы создадите новый массив со всеми элементами в todos и создадите новый объект, где переключается complete, он будет работать как положено.

const completeTodo = (index: number): void => {
  const newTodos: ITodo[] = [...todos];
  newTodos[index] = {
    ...newTodos[index],
    complete: !newTodos[index].complete
  };
  setTodos(newTodos);
};
5
задан Quinn Taylor 30 June 2009 в 19:52
поделиться

1 ответ

Привязка к тегам , поскольку путь ключа модели пытается привязать предикат поля поиска к пути ключа arrayController.filterPredicate.tags. Поскольку свойство filterPredicate контроллера массива не имеет свойства tags, вы, вероятно, получаете исключения «ключ не найден», которые автоматически регистрируются. Вместо этого, вспоминая, что filterPredicate NSArrayController применяется к членам массива, вы хотите, чтобы привязка была настроена примерно так:

Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value

self.tags можно было бы записать как просто теги , но я думаю, это проясняет, что теги - это свойство объекта, к которому применяется предикат.

10
ответ дан 13 December 2019 в 22:15
поделиться