Как создать Eureka AlertRow с опциями из Core Data и опцией «None»? - PullRequest
0 голосов
/ 26 ноября 2018

GTDItemEntity является сущностью базовых данных.Мне нужно иметь возможность принять «Нет» или «Нет проекта» в качестве допустимого значения.Я могу сделать это с .value и .displayValueFor.Но как мне разрешить это в настройках?

 <<< AlertRow<GTDItemEntity>() {
            $0.title = "Project"
            $0.value = self.item?.project
            $0.displayValueFor = { project in
                return project?.text ?? "No Project"
            }
            $0.options = [nil] // sample one option with nil value
            $0.onChange() {
                self.item.project = $0.value
            }
        }

1 Ответ

0 голосов
/ 26 ноября 2018

Один из способов сделать это - перейти на AlertRow<GTDItemEntity?>:

 <<< AlertRow<GTDItemEntity>() {
            $0.title = "Project"
            $0.value = self.item?.project
            $0.displayValueFor = { project in
                return project??.text ?? "No Project" // *
            }
            $0.options = [nil] // sample one option with nil value
            $0.onChange() {
                self.item.project = $0.value ?? nil // *
            }
        }

Обратите внимание, что это делает $0.value двойным необязательным, поэтому я изменил некоторый код в строках, отмеченных *.

Еще один способ сделать это - добавить специальный GTDItemEntity в качестве одного из параметров.Вы бы присвоили значение определенному полю этого специального GTDItemEntity так, чтобы никакое другое GTDItemEntity не имело этого значения.Затем вы можете проверить, изменилось ли значение строки на этот специальный объект в onChange.Если это так, установите значение nil.

...