【发布时间】:2017-06-10 07:59:28
【问题描述】:
使用Swift 2.3,我有一个用特定类型定义的Core Data Set,如下所示:
@NSManaged public var personEntities: Set<PersonEntity>?
我只是想将其转换为 PersonEntity 的 swift 2.3 Array - 简单吧?我尝试了以下方法,它们都会产生各种错误:
cell.people = Array(self.memory.personEntities)
(不能使用类型为 .. 的参数列表调用类型 .. 的初始化程序)
cell.people = self.memory.personEntities.flatMap({$0 as? PersonEntity})!
(无法将 Person Entity 类型的值赋给类型 [PersonEntity])
cell.people = self.memory.personEntities.flatMap({$0})
(Flatmap 产生 U,而不是上下文结果类型 _)
非常感谢任何帮助。
【问题讨论】:
-
那是因为
personEntities是可选的。它必须是可选的吗?它很可能具有[]的默认值,即为空的Set。 -
@Eendje 假设
nil==[]绝对不是要走的路。 -
@LukeSmith 你必须解开可选的
Set<PersonEntity>?才能获得Set<PersonEntity>。从那里您可以将其传递给Array初始化程序。 -
@Alexander 因此我问它是否应该是可选的。如果
nil或[]无关紧要,他的情况会更容易。 -
@Eendje 您不应该根据编程的便利性在两者之间进行选择。它们有两种截然不同的语义
标签: arrays swift generics core-data set