Objective-C - 在 NSPredicate CONTAINS 中用逗号包裹属性值

Objective-C - wrap attribute value with commas in NSPredicate CONTAINS

情况是这样的。我有一些核心数据数据,我想获取其中用两个逗号包裹的属性值包含另一个字符串的数据。

这是我当前的代码:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type CONTAINS %@", [NSString stringWithFormat:@",%@,",typeBar]];

简单的说,这就是我想要达到的效果:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@",type, CONTAINS %@", [NSString stringWithFormat:@",%@,",typeBar]];

在 'type' 两边加上逗号。但很明显,当我这样做时,它不再识别该属性。我试过了,'type',但还是不行。

我试过这个:

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@",%K, CONTAINS %@", @"type", [NSString stringWithFormat:@",%@,",typeBar]];

但我得到一个:'NSInvalidArgumentException', reason: 'Unable to parse the format string ",%K, CONTAINS %@"'

我希望问题足够清楚。

非常感谢!

你不能那样做。您正在尝试将要查询的密钥更改为无效的内容,因此出现解析错误。

如果你只存储一个普通类型,你就不能真正做你想做的事。想必你的类型可能是一个字符串列表的东西?

因此,您需要重新考虑您的方法,根据您的根本问题,有多种选择:

  1. 在开头和结尾(以及项目之间)使用逗号存储 type 的文本
  2. 不要使用字符串,使用其他实体(如果您有项目列表)
  3. 基于普通类型的谓词,不带逗号,然后在从核心数据中获取项目后更详细地过滤结果(与 'full' 对字符串的代码访问相比,谓词具有限制性)