【问题标题】:How can I save CoreData object on the same day? [duplicate]如何在同一天保存 CoreData 对象? [复制]
【发布时间】:2021-11-18 18:46:23
【问题描述】:

有没有办法在同一天保存多个 CoreData 对象?

let newitem = Record(context: viewContext)
newitem.date = Date()
newitem.totaltime = item.totaltime

下一次在同一个 Date() 上

totaltime += 200

我用过这个,但是不行

if !ro.filter({$0.date == Date()}).isEmpty{
}else{
}

【问题讨论】:

  • 你能解释一下你想做什么,以便我们得到更好的主意吗?
  • Date() 包含比日/月/年更精确的信息——如果我没记错的话,最多可以达到毫秒。因此,当您按Date() 过滤时,它与保存记录时的对象完全不同(代表不同的时间点)。您只需要提取相关组件。
  • 我用两个链接关闭了这个链接,一个用于使用 NSPredicate,一个用于使用实例过滤器

标签: swift core-data


【解决方案1】:

据我所知,在 .filter{} 方法中,仅通过 Date() 过滤是行不通的。

请看下面的例子,

let now = Date()
var delayedDate: Date!

// Causing a delay of 1 second
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    delayedDate = Date() // Date after one second
    print("Date now:", now, ", Delayed date:", delayedDate!) // Printing the dates. See that they are not equal
    print(now == delayedDate) // Checking if the dates are equal will result in false
}

这将导致以下结果

这意味着您与 CoreData 中的日期对象进行比较的日期对象不相等。您可以说您试图将完全不同的对象等同起来。

所以你可以做的是,使用来自this 链接的解决方案将Date() 对象分解为datehourminute 等组件,然后比较date使用 CoreData 中的组件。请注意,CoreData Dates 也需要进行组件转换

【讨论】:

  • 谢谢,我想我需要清理出口 coredata 数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
相关资源
最近更新 更多