Удалить
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
if(selectedIndexPaths.contains(indexPath)){
selectedIndexPaths=selectedIndexPaths.filter { [110] != indexPath }
}
}
он вызывается при выборе ячейки и автоматически отменяет выбор ранее выбранной ячейки, а затем изменить его на
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if selectedIndexPaths.contains(indexPath) {
selectedIndexPaths = selectedIndexPaths.filter { [111] != indexPath }
}
else {
selectedIndexPaths.append(indexPath)
}
collectionView.reloadItems(at: [indexPath])
}
Взгляните на Функтор Apache Commons . Например, UnaryPredicate , UnaryAnd , UnaryOr и т.д. Встроенные реализации поддерживают сериализацию, но я не знаю о синтаксическом анализе строк. Тем не менее, я думаю, что это очень хорошее начало того, чего вы хотите. Также посмотрите это руководство IBM , основанное на библиотеке.
Похоже, вы ищете что-то вроде Hibernate Criteria API . Недостатком является то, что вы привязаны к базе данных или, что еще хуже, к конкретной реализации персистентной структуры. Кроме того, он не охватывает все ваши требования, поэтому я не думаю, что это хороший выбор ...
Похоже, вы ищете Функторы (также известные как объекты функций). Если это так, то этот вопрос SO будет уместным, относительно. варианты: Функтор Commons (уже упоминавшийся) - одна из альтернатив, но есть и другие.
Все библиотеки функторов поставляются с каркасом (который довольно прост; унарные, бинарные предикаты, функции отображения для них, объединение цепочкой) и базовый набор наиболее часто используемых функций.