gpt4 book ai didi

iphone - 过滤 NSFetchedResultsController 的 nil 值?

转载 作者:行者123 更新时间:2023-12-03 16:23:30 25 4
gpt4 key购买 nike

我有一个NSFetchedResultsController,它从NSManagedObjectContext获取对象。

这些对象有一个 lastOpened 属性,该属性最初为 nil 并且仅在查看它们时设置。

我希望我的 UITableView 显示最近打开的对象的列表,我可以通过将 NSSortDescriptor 添加到 NSFetchRequest 来实现。

问题:

我不想显示从未研究过的对象。 (lastOpened == nil) 我可以通过相同的 NSFetchRequest 对此进行排序吗?有没有更好的方法来过滤数据?

谢谢。

最佳答案

绝对是的。您正在寻找的是 NSPredicate 。基本上,它允许您指定希望获取的对象满足的一个或多个条件,然后仅获取与这些条件匹配的对象。

构建谓词是一个有点棘手的命题,但是 - 您可能想看看 Predicate Format String Syntax入门指南。 对于您的特定情况,它甚至更棘手,因为我不确定谓词术语中是否有 nil 值的表示。但是,您可以通过使用遥远的过去的某个日期来解决这个问题:

<strike>NSPredicate *predicate = [NSPredicate predicateWithFormat:@"lastOpened > %@",
[NSDate dateWithTimeIntervalSince1970:0]];</strike>

您可以直接在谓词中检查 nil:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"lastOpened != nil"];

这将创建一个谓词,仅允许返回具有设定日期(1970 年 1 月 1 日之后的任何日期)的对象。然后,您可以在执行提取请求之前将谓词添加到该请求中:

// Assuming you have some almost-ready NSFetchRequest *request:
[request setPredicate:predicate];

关于iphone - 过滤 NSFetchedResultsController 的 nil 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1070921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com