Как получить отношения, связанные с записью в coreData - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в coredata и хочу получить атрибуты, относящиеся к записи.Я использую следующий код для вставки записи.

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 Ответ

0 голосов
/ 25 октября 2018

Вы не получаете их, вы получаете доступ к ним через атрибут addresses

let adresses = personTest.adresses
...