Как создать основные отношения данных в Swift


У меня есть две сущности в моей модели данных: студент > класс

В Objective-C я могу использовать следующую строку, чтобы связать отношения моих двух объектов:

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

Однако в Swift нет NSSet. Как мне сделать то же самое?

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

2 ответа:

Как уже было сказано, вы можете использовать NSSet для назначения отношения to-many.

Но на самом деле проще назначить обратную (к-одному) зависимость от Grade до Student:

newGrade.setValue(newStudent, forKey: "student")
Это автоматически обновит обратную зависимость, т. е. добавит объект newGrade к свойству grades объекта newStudent.

И то, что вы на самом деле должны сделать, это создать подклассы NSMangedObject для ваших сущностей (в меню" Xcode-> Edit"), а затем используйте собственность аксессоры:

newGrade.student = newStudent

Это легче читать, легче писать, вы не рискуете ошибки ввода в ключевых строках, и компилятор может выполнить правильная проверка типа.

В Swift наверняка есть NSSet:

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

В Xcode 6.3 и Swift 1.2 также есть собственный тип Set. Это обычно наводит мосты через NSSet к Set<NSObject>.