我有一个包含多个实体的核心数据DB . 有一个名为“Person”的父实体,它有许多“朋友”,“朋友”有很多“活动”,“活动”有“类型”(“类型与”活动“有很多关系) . 我是什么我试图通过“类型”过滤所有“人”实体 . 用户将点击“类型”,然后我将刷新我的表并过滤“类型”显示的“人物”实体与他们相关的 .
目前我认为我必须使用复合谓词,但我完全相信如何去做 . 到目前为止,我所做的只是通过循环遍历我的fetchedObjects打印出我想要的值,如下所示:
NSArray *persons = self.fetchedResultsController.fetchedObjects;
for (JIPerson *person in persons) {
JIFriend *friend = person.friends.anyObject;
JIActivity *activity = friend.activities.anyObject;
JIType *type = activity.type;
NSLog(@"%@", type.name);
}
这会正确打印出值,但我需要使用这些值过滤我的表 . 我怎样才能做到这一点?
2 回答
好像我明白了 . 使用NSPredicate,您可以使用点表示法遍历这样的深层关系 . 我的实施如下:
是的,您可以在NSPredicate中使用点表示法 . 但是,您可能希望将类型设置为实际类型,这比仅进行字符串比较更清晰 .