如何使用核心数据中的选项和“无”选项创建Eureka AlertRow?

时间:2018-11-26 16:30:51

标签: ios swift eureka-forms

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 :(得分:1)

一种方法是更改​​为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。