如何使用 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。
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。