如何在 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
类型。这通常桥接 NSSet
到 Set<NSObject>
。
如前所述,您可以使用NSSet
来分配一对多关系。
但实际上分配反向(一对一)关系更容易
从 Grade
到 Student
:
newGrade.setValue(newStudent, forKey: "student")
这将自动更新反向关系,即将newGrade
对象添加到newStudent
的grades
属性 .
你实际上应该做的是创建 NSMangedObject
子类
为您的实体(在 "Xcode-> Edit" 菜单中),然后使用
属性 访问者:
newGrade.student = newStudent
这样读起来更容易,写起来也更容易,你没有运行的风险
在键字符串中键入错误,编译器可以执行
正确的类型检查。
我的数据模型中有两个实体: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
类型。这通常桥接 NSSet
到 Set<NSObject>
。
如前所述,您可以使用NSSet
来分配一对多关系。
但实际上分配反向(一对一)关系更容易
从 Grade
到 Student
:
newGrade.setValue(newStudent, forKey: "student")
这将自动更新反向关系,即将newGrade
对象添加到newStudent
的grades
属性 .
你实际上应该做的是创建 NSMangedObject
子类
为您的实体(在 "Xcode-> Edit" 菜单中),然后使用
属性 访问者:
newGrade.student = newStudent
这样读起来更容易,写起来也更容易,你没有运行的风险 在键字符串中键入错误,编译器可以执行 正确的类型检查。