我目前有2个实体:


清单
项目


这是一对多关系,其中列表可以包含许多项目。

项目具有称为completed的列。

我想从我的NSFetchRequest获取列表completed项的计数。

我知道我可以简单地执行List.Items.count来获得所有列表项的计数,但是我也不知道如何获得completed项的计数。

如何计算与NSFetchRequest中特定列值的关系,甚至是某些类型的过滤器/ List.Items.count的位置?

编辑

我必须将List重命名为MyList,将Item重命名为MyItem


MyList-> MyItem在核心数据中是一对多的(因此我可以在获取的结果中使用myList.myItems)
MyItem-> MyList在核心数据中是多对一的(因此我可以在获取的结果中使用myItem.myList)


这是我获取数据的方式。首先,我使用扩展名:

extension MyList {
    static func getAllMyLists() -> NSFetchRequest<MyList> {
        let request: NSFetchRequest<MyList> = MyList.fetchRequest()
        let sortDescriptor = NSSortDescriptor(key: "sortOrder", ascending: true)

        request.sortDescriptors = [sortDescriptor]

        return request
    }
}


然后在视图结构中使用@FetchRequest

@FetchRequest(fetchRequest: MyList.getAllMyLists()) var myLists: FetchedResults<MyList>


就像我说的那样,我不知道如何添加要添加的谓词,以使结果包含completed MyItems的计数...我在回答问题时使用了一种糟糕的方法,因为没有利用提取请求由于缺乏知识而发挥其全部潜力。

最佳答案

dahiya_boy和Joakim的评论都正确,我必须在NSPredicate中使用filtered

let completedPredicate: NSPredicate = NSPredicate(format: "completed == true")
let completedCount = List.Items.filtered(using: completedPredicate).count

关于ios - 如何计算与NSFetchRequest中特定列值的关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58814470/

10-11 19:56