由特定托管对象进行过滤的谓词 - Swift

时间:2015-04-02 20:33:41

标签: ios swift core-data tableview predicate

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

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
    }

我想知道如何或者是否可能通过特定的托管对象而不是托管对象的属性进行过滤(在这种情况下,名称')。我试过将我的谓词改为:

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

但我只是因未捕获的异常而崩溃。

我想要更改此内容,因为按名称过滤似乎不太好,因为两个客户端可能具有相同的名称,因此过滤结果相同。

1 个答案:

答案 0 :(得分:0)

所以我猜想你可以为描述符排序' nsDateOfAssessment'不是核心数据属性的实际名称。密钥应该是属性的实际名称。另外,我不会说按名字过滤是不好的做法。也许为谓词添加一个额外的参数,可以帮助查明正确的项目。当然,如果您为每个实体存储唯一标识符,那么它将是一种更清晰的方式。