【发布时间】:2011-03-25 10:59:22
【问题描述】:
我正在尝试使用 NSPredicate 来针对生成的 CoreData 对象数组搜索字符串匹配,如下所示:
// Grab an array of all Company projects
NSArray *array = [[company projects] allObjects];
我使用以下谓词将任何项目名称、公司名称或客户名称与不区分大小写的字符串匹配(注意:这应该允许部分匹配,因此“App”将匹配“Apple Inc.”等) :
(name LIKE[cd] %@) OR (ANY companies.name LIKE[cd] %@) OR (ANY companies.clients.name LIKE[cd] %@)
谓词中提到的 CoreData 关系如下所示:
SELF -> (NSString *) name
SELF -> (NSSet *) companies -> (NSString *) name
SELF -> (NSSet *) companies -> (NSSet *) -> clients -> (NSString *) name
每当我尝试按上述谓词进行过滤时,我都会在控制台中找到以下内容:
HIToolbox: ignoring exception 'Can't do regex matching on object {(
"Apple Inc.",
"Test Co.",
Microsoft
)}.'
如果我的理解正确,看起来好像尝试匹配键路径“companies.clients.name”会返回一个 NSSet(或其他对象),其中需要一个 NSString(名称)。
我做错了什么?
【问题讨论】:
标签: cocoa nspredicate core-data