【问题标题】:How to fetch data from core data using Entity relationship in swift?如何在swift中使用实体关系从核心数据中获取数据?
【发布时间】:2016-06-29 03:40:24
【问题描述】:

我有两个实体“Office”和“Employee”

Office Entity 属性是

         officeId - string
          officename - string

Employee Entity 属性是

         employeename - string
         emailid - string

并拥有多对多的关系——办公室与员工的关系是“员工”

                 func SaveData(){

    let entityOffice = NSEntityDescription.entityForName("Office", inManagedObjectContext: context)
    let newoffice = NSManagedObject(entity: entityOffice!, insertIntoManagedObjectContext: context)
    newoffice.setValue("BUI001", forKey: "officeId")
    newoffice.setValue("Home builders", forKey: "officename")


    let entityEmployees = NSEntityDescription.entityForName("Employee", inManagedObjectContext:context)
    let newemploy = NSManagedObject(entity:  entityEmployees!, insertIntoManagedObjectContext: context)

    // Populate Address

   newemploy.setValue("Tom william", forKey: "employeename")

    newemploy.setValue("tomus@yahoo.com", forKey: "emailid")



    // Add Address to Person
   newoffice.setValue(NSSet(object: newemploy), forKey: "staff")

    do {
        try newoffice.managedObjectContext?.save()
    } catch {
        let saveError = error as NSError
        print(saveError)
    }




}

保存数据工作正常。我不知道如何在有关系的实体之间获取。

如何使用“Office”实体的“officeid”获取“Employee”实体中的所有员工数据。 提前感谢

【问题讨论】:

    标签: ios xcode swift fetch entity-relationship


    【解决方案1】:

    您需要像这样使用NSPredicate:

    let officeId = "BUI001"
    let predicate  = NSPredicate(format: "ANY self.staff.officeId == %@", argumentArray: [officeId])
    let fetchRequest = NSFetchRequest(entityName: "Employee")
    fetchRequest.predicate = predicate
    

    现在使用这个 fetchRequest 和你的 managedContext 来获取所有与 officeId BUI001 相关的员工

    【讨论】:

      【解决方案2】:
      let fetchRequest = NSFetchRequest(entityName: “Employee”)
      
      let predicate = NSPredicate(format:”officeId=%@”, "BUI001")
      
      fetchRequest.predicate = predicate
      
      if let fetchResults = try? self.managedObjectContext.executeFetchRequest(fetchRequest)
      {
          if fetchResults.count > 0 {
              for bEntity in fetchResults {
      
                  let employeeEntity =  bEntity as! EmployeeEntity                                       
                  // append the details to the employeeDetails
      
          } else
          {
              print(“Details Not Added")
          }
      }
      return employeeDetails
      

      【讨论】:

      • 请记得解释为什么你的答案能解决问题:)
      猜你喜欢
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多