使用谓词获取核心数据

时间:2018-11-20 18:47:06

标签: swift core-data

我有两个核心数据实体,一个称为“人”,另一个称为“代码”。一个人与代码具有一对多的关系。

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实际上是我要为其检索代码的正确Person,但结果返回了所有Person的所有Code。我想念什么?

2 个答案:

答案 0 :(得分:0)

您不需要获取或谓词,您可以将关系作为属性访问

Tools

答案 1 :(得分:0)

由于您拥有Search files (Grep),因此无需获取任何数据,只需从关系中获取let codes = person.codes

Person