Swift 如何从特定日期获取核心数据?

Swift 如何从特定日期获取核心数据?,swift,core-data,Swift,Core Data,我试图显示用户在特定日期饮用的水量,例如从上周一开始。实体以UUID、Date和Int保存。是否有方法显示上周一的所有内容并将它们全部添加到一起?这是我尝试过的,但它把它们加在了一起。我试图在我的应用程序中创建一个类似历史的部分,并获取上周每一天的所有数据。 ` func getDateMonday(){ 让currentDate=Date() 让mondayComponent=DateComponents(工作日:2) 让lastMonday=Calendar.current.nextDate

我试图显示用户在特定日期饮用的水量,例如从上周一开始。实体以UUID、Date和Int保存。是否有方法显示上周一的所有内容并将它们全部添加到一起?这是我尝试过的,但它把它们加在了一起。我试图在我的应用程序中创建一个类似历史的部分,并获取上周每一天的所有数据。 `

func getDateMonday(){
让currentDate=Date()
让mondayComponent=DateComponents(工作日:2)
让lastMonday=Calendar.current.nextDate(在:currentDate之后,
匹配:周一组件,
匹配策略:。下一次,
RepeatedTime策略:。首先,
方向:。向后)!
let predicate=NSPredicate(格式:“日期>=%@”,最后一个星期一为NSDate)
让waterFetch=NSFetchRequest(entityName:“水”)
waterFetch.predicate=谓词
做{
let waterF=尝试viewContext.fetch(waterFetch)
适用于所有水下作业![NSManagedObject]{
设tot=all.value(forKey:“amount”)为!Int
星期一+=总计
}
打印(当前日期)
打印(星期一组件)
打印(上周一)
}抓住{
}
}`

在日历的帮助下,向后搜索第一次出现的weekday=2,即可获得最后一个星期一

let currentDate = Date()
let mondayComponent = DateComponents(weekday: 2)
let lastMonday = Calendar.current.nextDate(after: currentDate,
                                          matching: mondayComponent,
                                          matchingPolicy: .nextTime,
                                          repeatedTimePolicy: .first,
                                          direction: .backward)!
然后创建一个谓词

let predicate = NSPredicate(format: date >= %@, lastMonday as NSDate)
并将此谓词应用于获取请求


旁注:


YYYY
错误。在标准日历中,始终使用
yyyy

在日历的帮助下,向后搜索第一次出现的weekday=2,以获得最后一个星期一

let currentDate = Date()
let mondayComponent = DateComponents(weekday: 2)
let lastMonday = Calendar.current.nextDate(after: currentDate,
                                          matching: mondayComponent,
                                          matchingPolicy: .nextTime,
                                          repeatedTimePolicy: .first,
                                          direction: .backward)!
然后创建一个谓词

let predicate = NSPredicate(format: date >= %@, lastMonday as NSDate)
并将此谓词应用于获取请求


旁注:


YYYY
错误。在标准日历中,请始终使用yyyy

谢谢您的帮助,它可以正常工作,但由于某些原因,它需要休息一天。你知道为什么吗?我更新了我的主要问题。
print
以UTC显示日期。如果您的时区>=+0100,您(显然)可以休息一天。PS:创建获取请求
让waterFetch=NSFetchRequest(entityName:“Water”)
,这样可以避免类型转换,您可以为Water中的所有对象编写
{…
let tot=all.amount
谢谢你的帮助,它可以工作,但由于某些原因它需要休息一天。你知道为什么吗?我更新了我的主要问题。
print
以UTC显示日期。如果你的时区>=+0100,你(显然)可以休息一天。PS:创建提取请求
let wateretch=NSFetchRequest(entityName:“Water”)
,这避免了类型转换,您可以为Water中的所有对象编写
{…
let tot=all.amount