我目前有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/