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

时间:2015-02-21 16:48:48

标签: objective-c core-data nspredicate

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

这是我目前的代码:

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

简单地说,这就是我想要实现的目标:

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

用逗号围绕'键入'。但显然当我这样做时,它不再能识别出属性。我试过了,'键入',但这也不起作用。

我试过这个:

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

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

我希望这个问题很清楚。

非常感谢!

1 个答案:

答案 0 :(得分:1)

你不能这样做。你正在尝试的是尝试将要查询的密钥更改为无效的密钥,因此解析错误。

如果您只存储普通类型,则无法真正做到您想要的。大概你的类型可能是一个字符串列表?

因此,您需要重新考虑您的方法,根据您的潜在问题,有许多选项:

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