我的核心数据模型("客户端"<-->>评估")中有一对多关系,在评估表视图中,我目前正在按客户端名称筛选评估。
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"的关键字名称不是核心数据属性的实际名称。键应该是属性的实际名称。此外,我不会说按名字过滤是一种糟糕的做法。也许可以在谓词中添加一个额外的参数,以帮助精确定位正确的项。当然,如果你为每个实体存储一个唯一的标识符,这将是一种更干净的方法