用于按特定托管对象筛选的谓词-Swift



我的核心数据模型("客户端"<-->>评估")中有一对多关系,在评估表视图中,我目前正在按客户端名称筛选评估。

func assessmentFetchRequest() -> NSFetchRequest {
        let fetchRequest = NSFetchRequest(entityName: "Assessment")
        let sortDescriptor = NSSortDescriptor(key: "nsDateOfAssessment", ascending: false)
        fetchRequest.sortDescriptors = [sortDescriptor]
        fetchRequest.predicate = NSPredicate(format: "client.name == %@", self.client.name)
        return fetchRequest
    }

我想知道如何,或者如果可能的话,通过特定的托管对象而不是托管对象的属性(在这种情况下为"name")进行筛选。我试着把我的谓词改为:

fetchRequest.predicate = NSPredicate(format: "client.objectID == %@", self.client.objectID)

但我只是遇到了一个意外。

我想改变这一点,因为按名称过滤似乎是不好的做法,因为两个客户端可能有相同的名称,因此过滤结果相同。

所以我猜,对于您的排序描述符,"nsDateOfAssessment"的关键字名称不是核心数据属性的实际名称。键应该是属性的实际名称。此外,我不会说按名字过滤是一种糟糕的做法。也许可以在谓词中添加一个额外的参数,以帮助精确定位正确的项。当然,如果你为每个实体存储一个唯一的标识符,这将是一种更干净的方法

最新更新