如何使用可查询数组属性创build核心数据条目?

我有两个实体, IssueUser ,我正在使用它来表示来自服务器的数据。 在“问题”和“用户”之间存在多对多的关系,当从服务器获取问题时,对象具有一组用户ID。

后来,当我从服务器获取用户时,我希望能够find存储的具有匹配ID的问题。

我一直计划使用可转换的属性来存储每个问题的用户ID。 但是,我读过可转换的属性不可查询。 真的吗? 如果是这样,我如何创build一个可查询的数组属性?

无法查询作为实体的可变形属性存储的数组中的条目是正确的。

一种可能的解决scheme是在Issue实体中将用户ID列表存储为以逗号分隔的string属性,然后search匹配的ID,如下所述: 从包含id的stringformsNSPredicate 。

在阅读和创build问题时,一个不同的解决scheme是在第一遍中已经创build从IssueUser的关系。 当您从服务器获取用户标识列表的问题时,您将find或创buildUser对象并设置关系。

既然你正在使用两对多关系的实体,为什么不用核心数据来实现关系呢? 即在Issue实体中的usersSet (比如说)将是一个NSSetUserissuesSet也是一个NSSet 。 如果是这样的话,你可以通过下面的方式实现一个谓词来轻松地得到你想要的:

(下面的代码假定IssueUser之间的多对多关系是usersSet 。)

 User *userObjFromServer = <your user object from server>... NSString *userId = userObjFromServer.userId; //Whichever way you are doing this NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY usersSet.userId like %@",userId]; 

你正在谈论的可查询数组将是关系(只有,它是一个NSSet )。