NSPredicate 和 CoreData - 决定 iOS 上的 Date 属性是否为“今天”(或昨晚 12 点到今晚 12 点之间)

2023-11-24

我正在使用一个NSFetchedResultsController and a UITableViewController从 CoreData 数据库填充 UITableView。

我有一个NSDate对象保存到标记为“startTime”的日期属性中。然后我尝试使用以下方法仅提取今天的数据NSPredicate看起来像这样:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"startDate == %@",
                          todaysDate];

我得到的结果为零。我理解这一点是因为NSDate对象只保存自 1970 年 1 月 1 日以来的秒数或毫秒数,对吗?因此,在同一天比较 1111111111111 和 1111111111112 是两个不同的NSDate不相等的对象。

那么,怎样才能NSPredicate被格式化以便它可以做到这一点?我猜它会创造两个NSDate对象:一个是昨晚 12 点,另一个是今晚 12 点,比较 startDate 看看是否在这两个之间NSDates.

我有点陌生NSPredicate,那么如何才能实现这一点呢?


Use NSCompoundPredicate.

NSPredicate *firstPredicate = [NSPredicate predicateWithFormat:@"startDate > %@", firstDate];
NSPredicate *secondPredicate = [NSPredicate predicateWithFormat:@"startDate < %@", secondDate];

NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:firstPredicate, secondPredicate, nil]];

Where firstDate今天早上 12 点secondDate今晚 12 点。

附:以下是如何到达今天凌晨 12 点的方法:

NSCalendar *calendar = [NSCalendar calendar]; // gets default calendar
NSCalendarComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:[NSDate date]]; // gets the year, month, and day for today's date
NSDate *firstDate = [calendar dateFromComponents:components]; // makes a new NSDate keeping only the year, month, and day

为了今晚 12 点,改变components.day.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSPredicate 和 CoreData - 决定 iOS 上的 Date 属性是否为“今天”(或昨晚 12 点到今晚 12 点之间) 的相关文章

  • UITableViewHeader 的 UISearchBar 子视图?

    我想将 UISearchBar 添加到已有标题视图的 UITableView 中 当我尝试将搜索栏添加到现有标题视图时 它会一直工作 直到我点击它 此时我得到The view hierarchy is not prepared for th
  • 如何使 UITableView 可重新排列?

    我正在尝试使我的 UITableView 可编辑 以便您可以移动单元格 现在 当我单击编辑按钮时 它只允许我删除 但不能重新排列 我有的方法有 Code BOOL tableView UITableView tableView canEdi
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • 日期时间到 NSDate

    如何转换字符串2010 11 19T20 00 00Z进入一个NSDate object 我尝试过使用 dateFormatter setDateFormat yyyy MM ddTHH mm ssZ 但看起来我的自定义格式样式错误 PS
  • UITableView 给出空表,不加载数据

    当保存我的表的视图是主 第一个 视图时 一切正常 但是 当它不是第一个视图并且我切换到该视图时 我的表不会加载数据 并且我得到一个空桌子 使用 NSLog 我可以看出该程序是不调用 numberOfRowsInSection 和 cellF
  • 当 tableview 滚动时 UISegment 值发生变化

    我正在使用 UISegmentControl 在表格视图中显示客观类型问题 但是 如果我在任一单元格中选择一个段 那么如果我滚动 某些段值就会发生更改 我不知道如何解决这个问题 请指导我 细胞尺寸 160px 段色调颜色 蓝色 Coding
  • 如何从子 UICollectionview 内部获取 UITableView 的一部分

    我有一个UITableView with a UICollectionView在其每一行中 如下图所示 source https ashfurrow com blog putting a uicollectionview in a uita
  • NSPredicate 查询不包含特定字符串

    对这个问题进行了高低查找 但找不到我的答案 我正在查询核心数据以查找不等于指定字符串的所有记录 例如 所有不等于当前会话ID的记录 我已经尝试过这些但无济于事 NSPredicate predicate NSPredicate predic
  • IOS Coredata 兼容 IOS 9 和 ios 10

    您好 我正在开发一个适用于 IOS 10 和 9 xcode 8 的应用程序 创建新实体对象的正确方法是什么 新的IOS 10有这个代码 var newEvent Event context context 我们如何让这段代码同时适用于 I
  • Swift:在 Core Data 中存储自定义类的数组

    我是核心数据新手 但对于我的一个新项目 我想将我的数据保存到核心数据 我想创建一个 Reptile 类 其中包含几个自定义类数组 如果没有核心数据 我会得到这样的东西 import Foundation import UIKit class
  • NSSortDescriptor 和多对多关系

    我有两种反对意见 地点和历史项目 我正在尝试获取附加到任何历史记录项目的位置 因此该位置的获取谓词是 history count gt 0 效果很好 我还想使用 NSSortDescriptor 按最新历史项目的日期对位置对象进行排序 据我
  • 先下载数据,然后在TableViewcontroller上显示

    我有 tableviewcontroller 和从服务器获取的数据 我使用以下类来下载异步数据 但我的问题是当用户看到 tableViewcontroller 时正在加载数据 我希望在用户看到之前加载数据 import
  • 保存一页数据并将该数据添加到 tableView

    大家好 我有 2 个视图 第一个有 UITableView 第二个有一个文本字段 当用户按下第二页上的 保存 按钮时 我希望将文本字段文本添加到 tableView 中 这是我正在使用的代码 IBAction saveButton id s
  • 优化构建中通用函数的 Core Data Swift 转换失败

    我们有一个具有相当广泛的核心数据模型的应用程序 其中有许多用 Objective C 实现的自定义子类 但越来越多的用 Swift 编写的应用程序也使用这些子类 值得一提的是 我们使用 Xcode 7 3 1 针对 iOS 9 3 进行构建
  • Xcode 9.2 UIDocumentBrowserViewController:无法从 bookmarkableString 创建 url

    Update Xcode 9 3 已修复它 在创建 UIDocument 文件时UIDocumentBrowserViewController 默认 错误 无法解析书签 错误 错误域 NSFileProviderInternalErrorD
  • 将数据追加到 UITableView 的正确方法,swift

    我正在尝试使用两种方式将新数据添加到 UITableView 第一种方式 func insertData appendMessages Message var currentCount self messeges count var ind
  • 使 UITableView 中的动态更新内容可供 VoiceOver 访问

    我正在努力让我的应用程序更易于访问 到目前为止 标签和提示等标准可访问性正在创造奇迹 然而 我在动态更新 UITableView 中显示的内容时遇到了问题 表的每一行大约每秒更新一次 但如果我尝试在此时创建每个单元格的accessibili
  • 仅在导航弹出后分组 UITableViewCell 上才会出现黑色角

    我不是图形专家 但我以某种方式设法通过使用一些 CG 代码将背景视图设置为 backgroundView 来制作一些好看的自定义分组 UITableViewCells 在 3 1 3 之前的所有 SDK 中 也许是 3 2 我还没有在 iP
  • Core Data + CloudKit 无法在其他设备上自动刷新?

    我的 SwiftUI 应用程序与 Core Data CloudKit 一起使用 我可以从 Mac 或 iPhone 将新条目保存到数据库中 该应用程序对所有设备使用完全相同的项目 代码库 唯一的问题是我需要关闭应用程序并重新打开它才能查看
  • 所有 UI 前面的透明 UIImageView

    首次启动我的应用程序后 我想向用户展示一些教程 以解释我的应用程序的功能 所以我需要设置一个带有一些箭头和标签的透明 UIImageView 其中主 UI 更具体地说 tabbarcontroler 中的 navigationviewcon

随机推荐