swift CoreData -如何过滤部分匹配?

toiithl6  于 2023-01-19  发布在  Swift
关注(0)|答案(1)|浏览(127)

我正在为一个项目使用CoreData-我的CoreData实体有一个属性“date”,类型为Date。我正在尝试仅基于mm/dd/yy过滤数据。以下是我目前所拥有的
fetchRequest.predicate = NSPredicate(format: "date = %@", date as! NSDate)
这不起作用,因为“date”包含时间,即使日历日期相同,也会使每个条目不同。
我试过将日期解析为字符串mm/dd/yy,并将格式更改为“date CONTAINS stringDate”,但没有成功-我认为我不应该能够搜索日期中的字符串。
我已经浏览了关于 predicate 的文档,但是我不知道如何应用于Date类型。

fcipmucu

fcipmucu1#

这里需要采用的方法是创建一个 predicate ,在 predicate 中测试date属性是否介于一天的开始和结束之间,这样就可以获得当天任何时间的匹配。

let predicate = NSPredicate(format: "date >= %@ && date <= %@", 
                            argumentArray: [startDate, endDate]

其中,从给定日期inputDate开始计算日期,公式为

let startDate = Calendar.current.startOfDay(for: inputDate)
let endDate = Calendar.current.date(byAdding: .day, value: 1, to: startDate)!

相关问题