问题标签 [nspredicate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
42435 浏览

objective-c - 使用 NSPredicate 判断一个字符串是否等于另一个字符串

我有一个随该方法NSArray返回的 CalEvents 。[CalCalendarStore eventPredicateWithStartDate]从返回的事件中,我试图只保留事件标题 == @"on call"(不区分大小写)的那些。

我可以将标题包含 @"on call"以下代码的事件保留在数组中(其中“事件”是填充有 的“NSArray” CalEvents):

我尝试过使用谓词格式字符串,例如:

@"SELF.title == 'on call'"但这似乎不起作用。

有没有更简单的方法来做到这一点?

0 投票
1 回答
2207 浏览

iphone - NSPredicate 语法以排除给定的 NSManagedObject

我有一个核心数据存储,其中许多实体应该是其特定 NSEntityDescription 的唯一实例。我目前正在通过为给定描述创建一个新实体来做到这一点,然后是:

哪个有效,但感觉我应该能够做到这一点!= 使用 NSPredicate 而不是在迭代中,但我只是想不出正确的谓词语法来做到这一点。任何人都可以启发我吗?

0 投票
1 回答
416 浏览

iphone - Dealloc 的谓词使 iPhone 应用程序崩溃!

作为序言,这是对几天前进行的调查的跟进: https ://stackoverflow.com/questions/2981803/iphone-app-crashes-when-merging-managed-object-contexts

简短版本:EXC_BAD_ACCESS 正在使我的应用程序崩溃,并且僵尸模式显示罪魁祸首是我嵌入在我的 Fetched Results Controller 中的提取请求中的谓词。如果没有明确的命令,如何释放对象中的对象?

加长版:应用程序结构平台视图控制器 -> 游戏视图控制器(基于平台选择) -> 添加游戏视图控制器

当在 Platforms 视图上单击一行时,它会在 Games View 中为该平台设置一个实例变量,然后 Games Fetched Results Controller 以正常方式构建一个获取请求:

在这个方法的最后,fetchedResultsController 的 _fetch_request -> _predicate 成员被设置为一个 NSComparisonPredicate 对象。世界上一切都很好。

当 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 被调用时,_predicate 现在是一个僵尸,当表尝试更新自身时,它最终会使应用程序崩溃。

我或多或少感到困惑。我没有发布获取的结果控制器或它的任何部分,唯一获得 dealloc 的部分是谓词。有任何想法吗?

编辑:作为测试,我将此行添加到 Fetched Results Controller 方法中:

现在它没有崩溃,但这似乎是一个补丁,而不是我应该做的事情。

0 投票
4 回答
35926 浏览

iphone - 如何在 NSSet 或 NSArray 中搜索具有特定属性的特定值的对象?

如何在 NSSet 或 NSArray 中搜索具有特定属性的特定值的对象?

示例:我有一个包含 20 个对象的 NSSet,每个对象都有一个type属性。我想获得第一个具有[theObject.type isEqualToString:@"standard"].

我记得有可能以某种方式对这类东西使用谓词,对吧?

0 投票
2 回答
198 浏览

iphone - 为什么我的子查询谓词中的 LIKE[c] 与此名称不匹配?

我有两个实体:Department 和 DepartmentInfo。每个部门都有一个或多个 DepartmentInfo 对象。在 DepartmentInfo 中,有一个 departmentName 属性。

我想获取所有具有特定部门名称的部门对象。所以我为 Department 实体创建了一个 NSFetchRequest,并使用了这个获取请求:

它有效,但是:LIKE[c] 无效!我必须与确切的部门名称相匹配。如果我这样做,我将得不到匹配:

这里有什么问题?

0 投票
1 回答
1982 浏览

iphone - 如何防止 Core Data 中的“SQL 注入”?

我正在多次迭代中构建一个非常复杂的谓词,并希望立即在谓词中提供匹配值。

代替:

我想要做:

NSString *str = [NSString stringWithFormat:@"departmentName like[c] '%@'", departmentName]; [NSPredicate predicateWithFormat:str];

由于这是一个愚蠢的替换,我想有可能通过输入垃圾意外地“破解”谓词。

我找不到任何可以“神奇地引用”我的价值的东西。

原因是,我需要在几次迭代中构建一个复杂的谓词,所以我必须构建一个大的谓词字符串。模板不适用于 SUBQUERY。所以我需要立即在字符串中提供值,因为我不想根据我对谓词格式有多少值进行 20 种不同的谓词初始化。

0 投票
3 回答
457 浏览

iphone - 如何动态构建 NSLog 的参数?

示例:我有一个复杂的方法可以做很多事情,最后我想用 NSLog 打印一个报告。NSLog 需要一个字符串,然后是任意数量的参数。因此,可以说有这些可能的值可以记录:

一种

C

D

F

可能会发生 - 例如 - C 和 D 没有记录,但其余的都没有记录。我将如何构建一个代表 NSLog 的值参数的动态事物?

我为这个问题选择了 NSLog,因为它可能更简单,因为 NSPredicate 和 SUBQUERY。在使用 NSMutableString 和 appendFormat:... 时动态构建 NSPredicate 格式字符串似乎是不可能的,它总是导致谓词的编译错误。我猜 NSPredicate 提供的格式值与 NSMutableString -appendFormat 所做的不同。

因此,如果有一种方法可以为 NSPredicate 提供以下内容:1) 一个巨大的、动态创建的格式字符串 2) 一个巨大的、动态创建的参数“列表””

那将会很酷。

0 投票
3 回答
5216 浏览

iphone - 使用 NSPredicate 匹配两个数组中的 id

您好,我有一个可能很简单的问题,但我还不能处理。

  • 我有一个 Modelclass 'Location',它包含一个具有类别 ID(12、23、56)的数组。
  • 然后我有一个包含所有可用类别 ID 的数组(1、2、3、4、5、6、7、...)
  • 所有这些类别都有一个 ID,显示在 TableView 中,并且可以选择或不选择。
  • 我在 MapView(注释类是位置)上显示了一组标记,应该根据在提到的 Filter TableView 中选择的过滤器来显示这些标记。

我需要实现一个“按类别过滤”功能,该功能删除所有标记并再次添加它们,但仅基于列表中的选择。

所以我需要将数组与位置模型中的过滤器 ID 与数组与 TableView 中的所有过滤器 ID 进行比较。我为此使用了以下功能:

for (NSString *currKatId in currLocation.arrKatIds) {

} }

我知道这将是循环遍历所有内容的最无效方法。我想以某种方式使用 NSPredicate ,但我以前从未使用过它们,而且我找不到我的问题的例子。

你们有什么提示吗?

问候米。

0 投票
1 回答
681 浏览

iphone - 为什么这个 NSPredicate 不起作用?

我有一个非常简单的 NSPredicate :

当 theString == "p" 时,这会导致数组有 0 个结果

但是,当我这样做时:

正如预期的那样,我得到了 100 多个结果。

我用 NSLog() 检查了“theString”,它的值是正确的。我觉得我错过了一些关键的秘密。可能是因为我使用的是字符串而不是字符?

想法?

0 投票
6 回答
2664 浏览

ios - 确定一个 NSDate 是否是今天在 NSPredicate 中

我已经尝试了多种方法并在此站点上尝试了一些建议,但是如何确定 CoreData 属性“dueDate”是否等于“Today”,我知道 NSDate 也是一个特定时间,但我希望谓词返回 if无论一天中的时间是什么时候,它都是同一天/月/年。有什么建议么?