如何在 Swift 中创建核心数据关系

How to create a Core Data Relationship in Swift

我的数据模型中有两个实体:Student <-->> Grade

在 Objective-C 中,我可以使用以下行来 link 我的两个对象的关系:

[newStudent setValue:[NSSet setWithObject:newGrade] forKey:@"grades"];

但是在Swift中没有NSSet。我如何执行相同的操作?

newStudent.setValue(??????, forKey: "grades")

Swift中肯定有NSSet:

newStudent.setValue(NSSet(object: newGrade), forKey: "grades")

在 Xcode 6.3 和 Swift 1.2 中,也有一个原生的 Set 类型。这通常桥接 NSSetSet<NSObject>

如前所述,您可以使用NSSet来分配一对多关系。

但实际上分配反向(一对一)关系更容易 从 GradeStudent:

newGrade.setValue(newStudent, forKey: "student")

这将自动更新反向关系,即newGrade对象添加newStudentgrades属性 .

你实际上应该做的是创建 NSMangedObject 子类 为您的实体(在 "Xcode-> Edit" 菜单中),然后使用 属性 访问者:

newGrade.student = newStudent

这样读起来更容易,写起来也更容易,你没有运行的风险 在键字符串中键入错误,编译器可以执行 正确的类型检查。