在CoreData NSManaged关系中使用typed Set

时间:2016-01-29 23:42:19

标签: core-data swift2 xcode7 nsset

当您创建托管对象关系(即一对多),然后创建NSManagedObject子类时,您可以将该关系编码为:

@NSManaged var dogs: NSSet

但我发现你可以写:

@NSManaged var dogs: Set<Dog>

在我看来,它更方便,因为你有一个打字的Set,并且在Swift中的转换非常冗长。

编辑: 实际上,我发现您可以使用套装的insertremove方法,这样就更容易了。

我从一些Foundation类到Swift类(即NSArrayArrayNSSetSet)了解Swift自动bridging

但是我还没有找到使用Swift类型集来实现docs或任何其他教程中的Core Data Managed对象子类,我想知道为什么。

我正在使用Xcode 7.2和Swift 2,它在我的项目中运行良好。它也适用于其他人吗?一些Apple doc在某处?或者由于某种原因我不知道这是一个坏主意吗?

1 个答案:

答案 0 :(得分:1)

是的,就我所知,这是许多开发人员的常见做法。

实际上,生成的NSManagedObject子类在生成的类型中并不完美。例如,原语仍有问题,NSNumber有时会成功连接到Bool,有时不会。我经常需要修改可选状态。

如果您离开预设NSSet,您仍然可以转换为Set<Type>这是我在改变生成的子类之前所做的事情。键入集的多个属性。