代码之家  ›  专栏  ›  技术社区  ›  Ahmed

如何在coreData中获取与记录相关的关系

  •  0
  • Ahmed  · 技术社区  · 7 年前

    let entityDescription = NSEntityDescription.entity(forEntityName: "Person", in: mainContext!)
        let newPerson = NSManagedObject(entity: entityDescription!,insertInto: mainContext)
        let entityAddress = NSEntityDescription.entity(forEntityName: "Address", in: mainContext!)
        let newAddress = NSManagedObject(entity: entityAddress!,insertInto: mainContext)
        let otherAddress = NSManagedObject(entity: entityAddress!, insertInto:  mainContext)
    
        newPerson.setValue("Bart", forKey: "first")
        newPerson.setValue("Jacobs", forKey: "last")
        newPerson.setValue(44, forKey: "age")
        newAddress.setValue("Main Street", forKey: "street")
        newAddress.setValue("Boston", forKey: "city")
        newPerson.setValue(NSSet(object: newAddress), forKey: "addresses")
    
        otherAddress.setValue("5th Avenue", forKey:"street")
        otherAddress.setValue("New York", forKey:"city")
        // Add Address to Person
        let addresses = newPerson.mutableSetValue(forKey: "addresses")
        addresses.add(otherAddress)
    
    
    
        // Set First and Last Name
    
    
        do {
            try newPerson.managedObjectContext?.save()
        }
        catch
        {
            print("Couldnot do this op \(error)")
        }
    

    我的CoreData关系如下 enter image description here

    我用以下代码获取用户

    let fetchRequest = NSFetchRequest<NSFetchRequestResult>()
    
        let entityDescription = NSEntityDescription.entity(forEntityName: "Person", in: mainContext!)
        fetchRequest.entity = entityDescription
        fetchRequest.predicate = NSPredicate(value: true)
        do{
            let result = try self.mainContext?.fetch(fetchRequest)
            for personTest in result!
            {
                print(personTest)
            }
            if ((result?.count)! > 0)
            {
                let person = result![0] as! NSManagedObject
                print(person.value(forKey: "first"))
            }
    
        }
        catch
        {
            let fetchError = error as NSError
            print(fetchError)
        }
    

    我的问题是如何获取与当前用户相关的地址

    1 回复  |  直到 7 年前
        1
  •  1
  •   Joakim Danielson    7 年前

    你不去拿它们,而是通过 addresses

    let adresses = personTest.adresses