相关疑难解决方法(0)

如何知道NSPredicate中抽象实体的类类型?

使用核心数据我想获取一些数据.我的模型使用了一些抽象实体,参见附图,其中QuantifiedIngredient是一个抽象类.我想获取至少有一个RecipeQuantifiedIngredients的Ingredient实体,但中间是QuantifiedIngredient,这是一个抽象类.

我该怎么做,如何在NSPredicate中测试抽象类的实际类型?有什么想法或建议吗?

在此输入图像描述

我发现的唯一线索是: 如何在谓词中引用父实体的获取请求中的子实体名称?

可以在我的QuantifiedIngredient中使用自定义属性来知道它是否是RecipeQuantifiedIngredient?例如isRecipeQuantifiedIngredient?

非常感谢你的帮助.

core-data nspredicate nsfetchrequest ios5

9
推荐指数
1
解决办法
1060
查看次数

核心数据谓词按子实体属性进行过滤

我一直在寻找这个,但我一无所获,我认为它不受Core Data的支持.无论如何,让我们看看它:

我有3个实体:Ticket,TicketLineCheffLine.

故障单包含多个TicketLines(Ticket.lines).**CheffLine**继承自TicketLine.

现在我想获取票证(通过a NSFetchedResultsController),但过滤至少有一个CheffLine cheffStatus 大于0的票证.问题是这cheffStatusCheffLine实体的属性,所以我做了这个谓词:

[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, $x.cheffStatus > 0).@count)"];
Run Code Online (Sandbox Code Playgroud)

但是当执行时,我收到此错误:

由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'无法为谓词生成SQL(0!= SUBQUERY(行,$ x,$ x.cheffStatus> 0).@ count)(RHS上的问题)'

我注意到,如果使用$x.someVariableInTheTicketLineEntity而不是使用查询完成$x.cheffStatus,则可以正常工作.我也试过使用CAST,但获得了相同的结果

[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, CAST($x, 'CheffLine').cheffStatus > 0).@count)"];
Run Code Online (Sandbox Code Playgroud)

有没有办法做这个查询?请记住,它必须在一个内部工作NSFetchedResultsController.

core-data subquery nspredicate nsfetchedresultscontroller ios

5
推荐指数
1
解决办法
1053
查看次数

NSPredicate在嵌套对象/ NSSet上过滤NSFetchRequest期间的结果

我想要一个简单的谓词,它返回所有具有mode = 0的组和组中的注册模式= 0

确切地说,我需要一个谓词来访问嵌套对象属性.不知何故,谓词如下:

[NSPredicate predicateWithFormat:@"mode = 0 AND enrollments.Enrollment.mode = 0"]
Run Code Online (Sandbox Code Playgroud)

上面的谓词是错误的,显然不起作用.

编辑:

我也给了下面的谓词,但是没有成功.

[NSPredicate predicateWithFormat:@"mode = 0 AND ALL ( SUBQUERY(enrollments,$varEnrollment,$varEnrollment.mode = 0))"]
Run Code Online (Sandbox Code Playgroud)

我需要包含所有活动组的结果(group.mode = 0)和所有活动的enrollee(enrolles.mode = 0),但对我来说这个谓词不起作用.

core-data filter nested-set-model nspredicate nsfetchrequest

0
推荐指数
1
解决办法
4416
查看次数