В настоящее время вы изменяете объект todo
в вашей функции completeTodo
. Если вместо этого вы создадите новый массив со всеми элементами в todos
и создадите новый объект, где переключается complete
, он будет работать как положено.
const completeTodo = (index: number): void => {
const newTodos: ITodo[] = [...todos];
newTodos[index] = {
...newTodos[index],
complete: !newTodos[index].complete
};
setTodos(newTodos);
};
Привязка к тегам
, поскольку путь ключа модели пытается привязать предикат поля поиска к пути ключа arrayController.filterPredicate.tags. Поскольку свойство filterPredicate контроллера массива не имеет свойства tags, вы, вероятно, получаете исключения «ключ не найден», которые автоматически регистрируются. Вместо этого, вспоминая, что filterPredicate NSArrayController применяется к членам массива, вы хотите, чтобы привязка была настроена примерно так:
Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value
self.tags
можно было бы записать как просто теги
, но я думаю, это проясняет, что теги - это свойство объекта, к которому применяется предикат.