iOS NSPredicate对深度对多关系的预测

iOS NSPredicate对深度对多关系的预测,ios,objective-c,core-data,nspredicate,nsfetchrequest,Ios,Objective C,Core Data,Nspredicate,Nsfetchrequest,我试图检查一个字符串是否包含我的搜索字符串(比如说“cr”) 我有一个对象A,它有多个对象B,B有一个NSDictionary的NSArray(命名数组) NSDictionary有两个键:@“desc”和@“action” 我想获取“A”的所有对象,其中至少一个desc键包含我的搜索字符串“cr” 我试过: NSPredicate *searchStringPredicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(A.B, $b, ANY

我试图检查一个字符串是否包含我的搜索字符串(比如说“cr”)

我有一个对象A,它有多个对象BB有一个
NSDictionary
NSArray
(命名数组)

NSDictionary
有两个键:@“desc”@“action”

我想获取“A”的所有对象,其中至少一个desc键包含我的搜索字符串“cr”

我试过:

NSPredicate *searchStringPredicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(A.B, $b, ANY $b.array.desc CONTAINS[cd] %@).@count > 0)", @"cr"];
但我在:

NSArray *fetchedObjects = [context executeFetchRequest:request error:&error];

你知道发生了什么吗?

如果
A
B
有关系,
B
有一个
可转换的
(命名为
数组
)字典作为属性,那么你就不能执行获取请求来查询
数组的内容

可转换的
数据以二进制形式存储在数据存储中,因此只有在读入内存并解码后才能访问它


如果您需要能够使用fetch请求,那么您需要将字典数组转换为与另一个实体的关系(一旦您这样做了,子查询的语法看起来就错了).

您是否使用核心数据?我认为您使用谓词从核心数据中获取对象,但不清楚对象A和对象B的关系。你能再清楚一点吗?是的,我是。executeFetchRequestA与B有一对多关系。谢谢你的回答,我试过了,但我得到一个错误:“子查询中不能有非关系集合元素。”。我的根对象是A,他与拥有数组的B有一对多的关系,我是否需要进行其他子查询来运行我的NSB对象集?是的,我最初误解了问题-答案更新谢谢你的回答,我知道了解问题,我需要为我的NSDictionary创建一个实体。我不知道它存储为二进制文件。:)