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 %@"'
我希望问题足够清楚。
非常感谢!
你不能那样做。您正在尝试将要查询的密钥更改为无效的内容,因此出现解析错误。
如果你只存储一个普通类型,你就不能真正做你想做的事。想必你的类型可能是一个字符串列表的东西?
因此,您需要重新考虑您的方法,根据您的根本问题,有多种选择:
- 在开头和结尾(以及项目之间)使用逗号存储
type
的文本
- 不要使用字符串,使用其他实体(如果您有项目列表)
- 基于普通类型的谓词,不带逗号,然后在从核心数据中获取项目后更详细地过滤结果(与 'full' 对字符串的代码访问相比,谓词具有限制性)
情况是这样的。我有一些核心数据数据,我想获取其中用两个逗号包裹的属性值包含另一个字符串的数据。
这是我当前的代码:
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 %@"'
我希望问题足够清楚。
非常感谢!
你不能那样做。您正在尝试将要查询的密钥更改为无效的内容,因此出现解析错误。
如果你只存储一个普通类型,你就不能真正做你想做的事。想必你的类型可能是一个字符串列表的东西?
因此,您需要重新考虑您的方法,根据您的根本问题,有多种选择:
- 在开头和结尾(以及项目之间)使用逗号存储
type
的文本 - 不要使用字符串,使用其他实体(如果您有项目列表)
- 基于普通类型的谓词,不带逗号,然后在从核心数据中获取项目后更详细地过滤结果(与 'full' 对字符串的代码访问相比,谓词具有限制性)