You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中判断CoreData日期与当前日期日相等以控制SwiftUI视图显示问题

解决SwiftUI中仅显示日数相同的视图问题

首先要明确:你需要的是两个日期的日数字相等(比如1号和1号,无论月份、年份),而非判断两个日期为同一天。之前使用isDate(_:equalTo:toGranularity:)的方式是校验完整的年月日是否一致,自然不符合你的需求。

正确的做法是分别提取两个日期的day组件再做比较:

// 安全解包CoreData的date属性,避免强制解包引发崩溃
if let storedDate = example.date {
    let storedDay = Calendar.current.component(.day, from: storedDate)
    let currentDay = Calendar.current.component(.day, from: Date())
    if storedDay == currentDay {
        // 此处放置需要显示的SwiftUI视图
        Text("日数相同,显示此视图")
    }
}

关于之前代码不符合预期的原因

你提到的04/02/2023和05/02/2023,若按DD/MM/YYYY格式解析,二者的日部分分别是4和5,本身就不相等,视图不显示是符合逻辑的。但如果你的实际场景是类似02/04/2023(4月2日)和02/05/2023(5月2日)这类日数字相同但月份不同的情况,之前的isDate方法会因月份不一致判断为不相等,导致视图不显示——这就是你觉得不符合预期的核心原因。

另外,建议不要强制解包example.date!,CoreData的日期属性若为可选类型,优先用if let或guard let做安全解包,避免运行时崩溃。

内容的提问来源于stack exchange,提问作者Alexnnd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:52:07