2016-06-07 48 views
0

我必须将Entity和两者都连接起来。如何在NSSet核心数据中保存值(Swift)

enter image description here

我想插入在公司实体价值的价值,但我不知道如何将在company.employees(NSSet中)值。

员工和公司类给出如下:

extension Employees { 

@NSManaged var name: String? 
@NSManaged var age: NSNumber? 
@NSManaged var address: String? 
@NSManaged var company: Company? 

} 

extension Company { 

@NSManaged var name: String? 
@NSManaged var employees: NSSet? 

} 


// here i want to insert value 

    func addEmployees() { 

    let companyEntity = NSEntityDescription.entityForName("Company", inManagedObjectContext: managedContext) 
    let company = Company(entity: companyEntity!, insertIntoManagedObjectContext: managedContext) 
    company.name = txtCompany.text 


    let employeesEntity = NSEntityDescription.entityForName("Employees", inManagedObjectContext: managedContext) 
    let employees = Employees(entity: employeesEntity!, insertIntoManagedObjectContext: managedContext) 

    employees.name = txtName.text 
    employees.age = Int(txtAge.text!) 
    employees.address = txtAddress.text 

    // getting no idea here how to save values to NSSet?? 
// company.employees = 




    do { 
     try managedContext.save()    

    } catch { 
     fatalError("Error in saving Data...") 
    } 


} 

回答

5

它总是更容易从另一端做:

employees.company = company 

核心数据会走关系的许多方面的照顾因为你已经在你的数据模型中指定了相反的关系。

此外,重命名您的实体。它应该被称为Employee,因为每个实体代表一个员工。它会为你节省很多困惑。

如果你真的坚持从公司最终编辑它,你做这样的:

company.mutableSetValueForKey("employees").addObject(employees) 

,我希望你会同意是显著丑陋,更容易出错。

+0

感谢您的回复,但我想从company.employees这是键入关闭NSSet –

+1

做到这一点使用我的答案将具有完全相同的结果,除非你不需要混淆套。 – jrturton

+1

@ S.Bharti你会把alreadyl的'Company'和'Employee'建立关系。只需用另一种方式来定义关系。它以任何方式完成相同的事情,并且这种方式更容易编码。 – Fogmeister