DATEADD 的 NSPredicate 语法?

2023-11-30

有没有办法在 NSPredicate 上执行 DateAdd 或 DateDiff 函数? 谢谢你, 何塞.


事实上,有!这是一种迂回的做法,因为NSPredicate不直接支持它(即,你不能只是+ anInterval to an NSDate)。幸运的是,你可以做到,而且幸运的是,我大约两天前才想出来。

澄清一下:我假设你要求的是这样的东西:“一个对象有一个date财产。我想看看这个是否date属性是另一个日期之前/之后的某个任意间隔”。如果这就是您的意思,那么是的,您可以做到这一点。如果这不是您的意思,那么请澄清您的问题。

开始了。在这个例子中,我们将假设我们将评估这个谓词的对象有一个名为的属性date返回一个NSDate。我们将查看此日期是否比另一个日期至少早 1 天。我们可以通过几种不同的方式进行比较:

date + 1 day is before comparisonDate
date is before comparisonDate - 1 day

我将采用第一种方法:

NSDate * comparisonDate = ...; //an arbitrary NSDate object, against which we're going to be doing our comparison
NSTimeInterval interval = 86400; //the number of seconds you want add or subtract.

NSPredicate * p = [NSPredicate predicateWithFormat:@"CAST(CAST(date, 'NSNumber') + %f, 'NSDate') < %@", interval, comparisonDate];

这是怎么回事:

为了让它发挥作用,我们可以CAST()日期对象到NSNumber。这将转换NSDate进入一个NSNumber这是距离参考时间点(例如 1970 年 1 月 1 日或其他)的一些秒数。我们对这个数字加上或减去我们的间隔,然后将新数字转换回一个NSDate。然后我们可以使用常规比较运算符将新日期与比较日期进行比较。

这个想法有几个不同的变体,但它们都需要铸造一个NSDate到一个数字(或将一个数字转换为NSDate) 来获取其时间间隔。

狡猾的,嗯?

edit

如果 Core Data 抱怨谓词的构造,请尝试反转事情:

NSDate * comparisonDate = ...;
NSTimeInterval interval = 86400;

NSPredicate * p = [NSPredicate predicateWithFormat:@"date < CAST(CAST(%@, 'NSNumber') - %f, 'NSDate')", comparisonDate, interval];

edit #2

牧师偷走的雷霆:http://tumblr.com/xqorqjfrz

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

DATEADD 的 NSPredicate 语法? 的相关文章

  • NSUndoManager 会撤消后台发生的更改吗?

    我有一个编辑视图控制器 我正在使用 NSUndoManager 它是我的持久性存储 核心数据项目 的一组 我的应用程序的功能之一是与外部服务器同步 我想知道的是 如果我正在视图中编辑某些内容 同时应用程序正在与服务器同步 如果我改变主意并决
  • 主队列上的dispatch_sync 与dispatch_async

    请耐心等待 这需要一些解释 我有一个类似于下面的函数 上下文 aProject 是一个名为 LPProject 的核心数据实体 其数组名为 memberFiles 其中包含另一个名为 LPFile 的核心数据实体的实例 每个 LPFile
  • 10.11 NSCollectionView - 动态确定单元格大小

    OS X v10 11 AppKit 发行说明 https developer apple com library mac releasenotes AppKit RN AppKit 10 11CollectionView建议可以根据每个项
  • 在基于视图的 NSTableView 中,如何通过单击使控件成为第一响应者?

    基于视图的 NSTableView 似乎只有标准行为 为了使表内的文本字段成为第一响应者 用户必须双击或单击并 保持冷静 然而 考虑到基于视图的 NSTableViews 提供的灵活性 这种行为并不总是可取的 因为现在可能有很多不同且复杂的
  • 使用 NSCoder 编码 CGPoint 结构

    如何编码和解码CGPoint结构使用NSCoder 编码 CGPoint point point from somewhere NSValue pointValue NSValue value point withObjCType enco
  • Xcode 4:获取请求模板变量?

    在 Xcode 3 X 中 您应该右键单击获取请求模板的谓词编辑器中的空白来指定变量输入而不是硬编码谓词 这是 XCode 4 中的哪里 我已经按住了选项 右键单击 选项单击等 但无法弄清楚 我认为X4不再有变量了 相反 我认为您必须选择一
  • 迁移大型 Core Data 数据库崩溃

    我有一个将产品存储在核心数据文件中的应用程序 这些产品包括作为 可转换 数据的图像 现在我尝试使用轻量级迁移添加一些属性 当我使用一个小型数据库对其进行测试时 它运行良好 但当我使用一个接近 500 MB 的大型数据库时 应用程序通常会因内
  • 如何从 Xcode 4 中的实体创建用户界面?

    我已经用核心数据进行了几天的实验 并且在过去的几个小时里尝试找出如何从 xcode 4 中的实体创建 UI 根据我一直在阅读的书籍 您必须选择将核心数据实体拖到界面生成器中的窗口中 但是当我在 xcode 4 中执行此操作时 没有任何反应
  • 为什么在 10.5 上我必须在 NSWindowController 上调用 showWindow 两次?

    我有一个 NSWindowController 的子类 我用它从笔尖加载窗口并将其显示在屏幕上 下面是当我想显示窗口时调用的代码 在 10 6 上 当调用 showCustomWindow 时 会显示窗口 但在 10 5 上 必须调用此方法
  • 核心数据:为什么必须调用重新加载数据才能使我的应用程序运行?

    我花了整个晚上调试一个简单的应用程序 该应用程序从网络检索一张图像 是的 是的 旨在让我的生活更轻松 并将其显示在表格视图中 我这样做是为了练习学习核心数据 在我修复它之前 错误消息显示如下 2012 09 30 06 16 12 854
  • 无法按住 CTRL+拖动 NSButton 到自定义 NSView 标题

    我想创建一个自定义的NSTableCellView由 Interface Builder 实例化 我已将 Table Cell View 类设置为MyTableCellView 并正确创建MyTableCellView NSTableCel
  • 核心数据对多关系。它们是延迟加载吗?

    我在核心数据 适用于 iPhone 中有典型的模型 其中包含部门和员工 部门 gt gt 员工 我不想每次加载时都加载一个部门的所有员工 所以我想将员工创建为获取的属性 我想我可以定义一些像这样的谓词 employee deparmentI
  • 如何在可编写脚本的应用程序中将任意 AppleScript 记录传递给 Cocoa?

    我有一个 Cocoa 应用程序 其中包含 sdef XML 文件中描述的 AppleScript 字典 sdef 中定义的所有 AppleScript 类 命令等都是工作属性 除了我的 提交表单 命令 提交表单 命令是我尝试将任意信息哈希表
  • 是否为 Core Data 的获取结果控制器实现委托

    实现四种委托方法有什么好处 void controllerWillChangeContent NSFetchedResultsController 控制器 void 控制器 NSFetchedResultsController 控制器 di
  • 现有的和未输入错误的密钥的 NSUnknownKeyException

    我得到以下输出 Terminating app due to uncaught exception NSUnknownKeyException reason
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • 确定 NSView 是否绘制的正确方法

    有没有正确的方法来确定是否NSView实际上是否在当前视图层次结构中绘制 考虑以下情况 视图完全在屏幕外 不是强制性的 该视图不在视图层次结构的顶部 The isHidden and isHiddenOrHasHiddenAncestor不
  • NSPredicate 的 onFormat 字符串

    我想用 id 键对数据进行排序 我如何理解格式字符串的用途NSPredicate格式 我有一个100号的帖子 我的代码 let objectIDs posts map 0 id let predicate NSPredicate forma

随机推荐

  • 有没有办法在 R 图中对齐 2 个独立轴?

    我正在绘制具有不同轴的图表 问题是我希望两个轴交叉一个点 其余的并不重要 是否可以 这是一个可重现的代码 plot x 10 10 y 10 10 abline v 0 lty 2 par new TRUE plot x 10 50 y s
  • 无法运行从 Scala 文件创建的 jar 文件

    这是我用 Scala 编写的代码 object Main extends App println Hello World from Scala 这是我的构建 sbt name hello world version 1 0 scalaVer
  • VB.NET 中通过后期绑定实现的多态性不允许使用事件,有解决方法吗?

    我正在开发一个与一系列 USB 传感器通信的应用程序 我创建了一个使用名为 Sensor 的类的基本实现 该类包含允许与传感器交互的事件和方法 还涉及一个线程任务处理器 但我将举一个简单的示例 我的问题是 这个简单的概念验证示例运行良好 但
  • 在 Android 手机中启动图库

    当用户单击通知时 我试图从我的应用程序启动图库 我发现只有当您知道 Gallery 应用程序的包和类名时才有可能 我已经成功地为四家设备制造商找到了相同的内容 到目前为止 该代码有效 我只需要 Motorola 和 LG Android 手
  • 需要帮助在 tomcat 中调试 SSL 握手

    我有一个非常奇怪的问题并正在寻找一些提示 我有一个由客户端发送的证书 我需要安装该证书才能访问 HTTPS Web 服务 Windows 和 Linux 操作系统中均已安装证书 使用 keytool 命令 keytool import al
  • EDMX .NET 4.5 到 4.0?

    我们使用实体框架 并在项目设置为构建 NET 4 5 时创建了 EDMX 现在我们想要切换到 NET 4 0 但是当我们这样做时 我们会收到 EDMX 文件的编译错误 它指出以下错误 Error 10027 The XML namespac
  • 使用 itext (itextsharp) 替换一个 PDF 模板页面上的多个不同图像

    我们有一个 ASP NET 应用程序 用户可以用它来生成某些报告 到目前为止 我们有一个 PDF 模板 上面有一张图像 我们只需用我们以编程方式生成的图像 图表 替换该图像 我们使用了该网站的代码 http blog rubypdf com
  • Ansible playbook 检查用户是否存在或显示错误消息

    如何检查用户是否存在以及 如果存在 则继续下一个任务 如果不存在 则显示一条消息 Given user does not exist 您可以简单地使用获取模块 name get root user info getent database
  • F# 性能问题:编译器在做什么?

    参考这段代码 F 静态成员类型约束 为什么 例如 let gL G of 1L 1L 100000L gt List map fun n gt factorize gL n 明显慢于 1L 100000L gt List map fun n
  • 扩展样式表块

    我在基本布局中有样式表块 stylesheets filter cssrewrite bundles static css main css endstylesheets 我想知道是否可以在子模板中扩展此块 添加另一个或多个 CSS 链接
  • MeekroDB 错误“命令不同步;您现在无法运行此命令”

    我有一个包含以下几行的 PHP 脚本 require once meekrodb 2 1 class php DB user usr DB password pwd DB dbName db DB encoding utf8 results
  • 确定 CSV 的数据类型 - Python

    我是 Python 新手 在使用列表时遇到问题 我公开了我的问题 如您所见 我有一个具有以下结构的 datos csv 文件 1 4 0 none 2 2 0 3 0 none 2 2 5 2 5 tc 39 使用此函数我将数据存储在列表中
  • 是否可以声明带有属性的匿名非 IIFE JavaScript 函数

    我有一次发现 在将属性作为参数传递给其他函数之前 将属性分配给函数很有用 看起来像这样 对于匿名函数和变量分配函数对象之间的任何混淆 我感到抱歉 我认为它们不是同一件事 could strict mode have something to
  • 查找与 matlab 中向量的阶数相同的向量的唯一值

    我有一个向量 A 2 5 6 2 4 13 34 3 34 我想找到这个向量的唯一值 但不是按排序顺序 我在Matlab网站上搜索 发现了这个函数 C ia ic unique A rows stable 但是Matlab R2011a不识
  • 文件名上的 Posix I/O 操作顺序一致吗?

    我想知道是否有Posix标准保证对文件的修改通过重复保证是可见的open close调用相同的文件名 为了便于说明 请考虑以下 Bash 脚本 bin bash FILE mktemp echo Some data gt gt FILE c
  • 使用 Google Drive SDK iOS 创建文件夹

    我正在尝试使用适用于 iOS 的 Google Drive SDK 创建一个文件夹 来自此处的 Google 云端硬盘文档 https developers google com drive folder 它说创建文件夹就像创建具有特殊 M
  • 如何在 R 中重新排列图表

    我更新了我的diagrammer到版本 0 9 0 并开始从相同的数据渲染不同的图表 我的数据框现在看起来像这样 df lt data frame col1 c Cat Dog Bird col2 c Feline Canis Avis s
  • 如何免费制作 Xbox Live 独立游戏?

    有没有办法制作免费的 Xbox Live 独立游戏 现在我并不是想在市场上向全世界发布它 而是想在我的 Xbox 上免费测试它 我知道您必须在 Xbox 和 PC 上下载 XNA 应用程序 但我是否需要 XNA Creators Club
  • 通过镜像名称获取进程的进程句柄

    我需要使用 Win32 从 C 中最简单的方法通过可执行文件名获取另一个进程的进程句柄 我正在寻找的进程没有任何已注册的窗口类 我还知道 如果它正在运行 则只会有一个实例在运行 Use 创建Toolhelp32Snapshot 进程32优先
  • DATEADD 的 NSPredicate 语法?

    有没有办法在 NSPredicate 上执行 DateAdd 或 DateDiff 函数 谢谢你 何塞 事实上 有 这是一种迂回的做法 因为NSPredicate不直接支持它 即 你不能只是 anInterval to an NSDate