iOS NSPredicate 上的深度对多关系

标签 ios objective-c core-data nspredicate nsfetchrequest

我正在尝试检查字符串是否包含我的搜索字符串(例如“cr”)。

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

NSDictionary 有 2 个键:@"desc"@"action"

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

我尝试过:

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

但我不断收到 EXC_BAD_ACCESS(代码=2,地址=0x0):

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

你知道发生了什么吗?

最佳答案

如果AB有关系,并且B有一个可转换NSArray (名为 array) 的字典作为属性,那么您无法执行获取请求来询问 array 的内容。

可转换数据以二进制形式存储在数据存储中,因此在将其读入内存并解码之前您无法访问它。

如果您需要能够使用获取请求,那么您将需要将字典数组转换为与另一个实体的关系(一旦完成,子查询的语法看起来是错误的)。

关于iOS NSPredicate 上的深度对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23104415/

相关文章:

objective-c - 为 NSManagedObject 创建一个抽象基类

objective-c - 类别对键@sum的键值编码不兼容

iphone - 带有 UIActivityIndi​​cator 的 UIAlertView 显示得太晚/线程问题

iphone - 有没有办法使用 setValue :forKey which will take C-type variables?

objective-c - UIButton不显示文字设置宽度[UIButton setTitle]

objective-c - 如何根据 Objective-C 中数组的元素字典键获取唯一值?

cocoa - 从 XML 切换到 SQLite 核心数据存储时存在哪些潜在障碍?

ios - 由 CALayer.shadow 创建的裁剪阴影

ios - ViewWillAppear 未在选项卡栏项目 View Controller 中调用

objective-c - 调用选择器不会在单独的线程中调用委托(delegate)方法