Базовая выборка данных с использованием предиката - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть две основные сущности данных, одна называется Персона, а другая - Коды.Человек имеет отношения один-ко-многим с кодами.

enter image description here enter image description here

Я хочу получить все кодыдля определенного лица и имеют следующую функцию:

static func fetchCodes(person: Person) -> [Codes]? {
    let context = getContext()
    let fetchRequest : NSFetchRequest<Codes> = Codes.fetchRequest()
    let sortDescriptor = NSSortDescriptor(key: #keyPath(Codes.number), ascending: true)
    fetchRequest.sortDescriptors = [sortDescriptor]
    //print("person in fetchCodes=\(person.first)")
    fetchRequest.predicate = NSPredicate(format: "whosAccount == %@", person)
    do {
        let codes: [Codes] = try context.fetch(Codes.fetchRequest())
        //print("Codes count from fetchCodes: \(codes.count)")
        return codes
    } catch {
        return nil
    }
}

Я проверил, что аргумент person на самом деле является правильным человеком, для которого я хочу получить коды, но результат возвращает все коды для всех людей,Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Поскольку у вас есть Person, вам не нужно извлекать какие-либо данные, просто получите codes из отношения

static func fetchCodes(person: Person) -> [Codes] {
    return person.codes
}
0 голосов
/ 20 ноября 2018

Вам не нужны выборка или предикат, вы получаете отношение как атрибут

let codes = person.codes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...