Swift CoreData处理集

Swift CoreData处理集,swift,core-data,Swift,Core Data,我将CoreData引入到一个现有的类中,该类的对象包括到多个关系。 例如,在我之前,我会做这样的事情: “玩家”只是一个带有结果数组的普通类 for (y,result) in player.result!.enumerate() { 现在我不得不这样做 for (y,result) in (player.relResults!.allObjects as! [CDResult]).enumerate() 有更好的方法吗? 有什么方法可以避免这种难看的角色设置吗?在NSManagedOb

我将CoreData引入到一个现有的类中,该类的对象包括到多个关系。 例如,在我之前,我会做这样的事情: “玩家”只是一个带有结果数组的普通类

for (y,result) in player.result!.enumerate() {
现在我不得不这样做

for (y,result) in (player.relResults!.allObjects as! [CDResult]).enumerate() 
有更好的方法吗?
有什么方法可以避免这种难看的角色设置吗?

NSManagedObject
子类作为可选的
NSSet

@NSManaged var results: NSSet?
所以关系的目标实体的类型在这里丢失了, 需要一些铸造。但你不必改变信仰 设置为一个数组。您可以将其强制转换为相应的
集合
键入并在集合上迭代:

for result in player.results! as! Set<CDResult> { ... }
然后简单地用

for result in player.results! { ... }
缺点是,如果重新生成 Xcode中的托管对象子类。也许是未来版本的 Xcode将为多个关系创建
Set
typed属性

(您还可以看看哪一种是替代工具 创建具有一些附加功能的托管对象子类。可能是mogenerator处理得更好。)

for result in player.results! { ... }