gpt4 book ai didi

swift - 检查核心数据以获取包含今天日期的条目并执行功能

转载 作者:可可西里 更新时间:2023-11-01 01:07:52 26 4
gpt4 key购买 nike

我是 Swift 的新手,希望有人知道这个问题的答案 - 我尝试的任何方法似乎都不起作用!

我有一个 Swift 应用程序,它有一个名为“Drink”的核心数据实体,带有 2 个键:一个 Date 和一个名为“drinkWater”的实体,当按下按钮时它存储值“1”。

我正在尝试编写一个单独的函数,我可以在其中检查是否存在今天日期的条目,如果存在,则执行操作(在本例中更改 ImageView )。

我意识到以下不是答案,但这是我得到的答案!基本上我可以根据 drinkWater 的值获取所有条目(这需要在我猜的日期之前?)并且我可以将今天的日期全部打印到控制台。现在我卡住了......

private func updateMyImageView() {

let appDelegate = UIApplication.shared.delegate as! AppDelegate

let context = appDelegate.persistentContainer.viewContext

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Drink")
request.predicate = NSPredicate(format: "drinkWater = %@", "1")
request.returnsObjectsAsFaults = false

do {
let result = try context.fetch(request)
for data in result as! [NSManagedObject] {
print(data.value(forKey: "timestamp") as! Date)

}

} catch {

print("Failed")
}

let dateNow = Date()

print("Date is \(dateNow)")

}

返回:

2018-12-29 01:27:27 +0000

日期是 2018-12-29 12:21:21 +0000

任何关于如何将这一切变成正确功能的想法将不胜感激!

最佳答案

您需要在复合谓词中使用从一天开始到一天结束(午夜到午夜)的日期范围。这是基于类似 SO 的解决方案 question

var calendar = Calendar.current
calendar.timeZone = NSTimeZone.local

let dateFrom = calendar.startOfDay(for: Date())
let dateTo = calendar.date(byAdding: .day, value: 1, to: dateFrom)

let fromPredicate = NSPredicate(format: "timestamp >= %@", dateFrom as NSDate)
let toPredicate = NSPredicate(format: "timestamp < %@", dateTo! as NSDate)
let waterPredicate = NSPredicate(format: "drinkWater = %@", "1")

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Drink")
request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [waterPredicate, fromPredicate, toPredicate])

关于swift - 检查核心数据以获取包含今天日期的条目并执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com