如何使用 Core Data 的选项和 "None" 选项创建 Eureka AlertRow?

How to create an Eureka AlertRow with options from Core Data and a "None" option?

GTDItemEntity 是核心数据实体。我需要能够将 "None" 或 "No Project" 作为有效值。我可以用 .value 和 .displayValueFor 做到这一点。但是如何在选项中允许它?

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

一种方法是更改​​为 AlertRow<GTDItemEntity?>:

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

请注意,这使得 [=12=].value 成为可选的双精度值,这就是为什么我更改了标有 * 的行中的一些代码的原因。

另一种方法是添加一个特殊的 GTDItemEntity 作为选项之一。您可以为这个特殊 GTDItemEntity 的某个字段分配一个值,这样其他 GTDItemEntity 就没有该值了。然后,您可以检查该行的值是否已更改为 onChange 中的那个特殊实体。如果是,则将值设置为 nil。