核心数据如何过滤(NSPredicate)包括关系要求和给定的关系对象?

core data how to filter (NSPredicate) including a relationship requirement and given the relationship object?

我将如何过滤(构造一个 NSPredicate)以下内容。

那么我的 confusion/observations 是:

偏好是 SWIFT(但是,如果有人知道 Objective-C 也可能对我有帮助)。所以我再次尝试做的是:

谓词就是您所期望的。

NSPredicate(format: "name = %@ && school = %@", "Tom", school)

但是,您可以通过使用另一个方向的关系和过滤器找到没有谓词的人。

let tom = school.persons.filter { [=11=].name == "Tom" }.first

(您可能需要将 NSSet 转换为 Set<Person>)。

假设模型如下:

.. and 你想使用 NSPredicate .. 你可以尝试类似的东西:

func searchSchool(school: School, firstName: String) -> [Person] {

    let request = NSFetchRequest(entityName: "Person")
    let predicate = NSPredicate(format: "school == %@ && firstName == %@", school, firstName)
    request.predicate = predicate

    // we will perform the request on the context associated with the School NSManagedObject
    guard let context = school.managedObjectContext else {
        print("provided School managed object is not associated with a managed object context")
        return []
    }

    do {
        return try context.executeFetchRequest(request) as? [Person] ?? []
    } catch {
        return []
    }

}

但是,不要忘记其他选项(如@Mundi 建议的遍历关系和使用 filter