带有谓词的核心数据获取请求。需要正确的 NSPredicate
Posted
技术标签:
【中文标题】带有谓词的核心数据获取请求。需要正确的 NSPredicate【英文标题】:Core data fetch request with predicate. Need right NSPredicate 【发布时间】:2013-10-13 15:09:20 【问题描述】:我得到了具有两个 NSDate 属性 的实体。它们在这里:startTime, endTime
和两个限制,它们也在这里:NSDate *begin, NSDate *end
但问题是 endTime 可以为零
我需要获取以下所有实体:
(entity.startTime >= begin) AND (entity.endTyme == nil)
if (endType == nil)
和
(entity.startTime >= begin) AND (entity.endTyme <= end)
如果 (endTyme != nil)
如何从这两个 fetch 谓词中进行联合?或者也许使用过滤器?
【问题讨论】:
在什么情况下不起作用? 如果我在没有谓词的情况下获取,我会从数据库中获取所有实体,如果我使用这个谓词,我只会得到第一个实体。 First = 开始时间较早的实体 谓词似乎没问题。你能显示NSLog(@"predicate = %@", predicate)
的输出吗?
您是否记录了begin
和end
的日期以及每个对象的日期?你能证明吗?
我没有看到任何错误
【参考方案1】:
您的设置和谓词是正确的。检查您的数据,您会发现谓词按预期工作。
【讨论】:
我同意,一切看起来都很好。问题很可能出在实际数据中 制作一个 NSLog 语句,显示开始和结束日期以及实体的日期。然后比较。 当我滚动 NSDatePicker - 两个 NSDate 是有区别的。但是当我按下“保存”按钮时 - 我在两个 NSDate 变量中得到了相同的日期。 宾果游戏! - 你发现了你的错误。如您所见,它与谓词无关。请接受答案。【参考方案2】:(备注:你已经多次修改了你的问题。我最好追加 有关您的问题的新信息,否则很难获得 cmets 和答案 供未来的读者理解。)
获取开始时间>=给定时间且结束时间为nil
的所有对象或
[NSPredicate predicateWithFormat:@"(startTime >= %@) AND (endTime == nil OR endTime <= %@)",
startTime, endTime]
【讨论】:
看这个帖子***.com/questions/19363500/…以上是关于带有谓词的核心数据获取请求。需要正确的 NSPredicate的主要内容,如果未能解决你的问题,请参考以下文章