如何使用可查询数组属性创build核心数据条目?
我有两个实体, Issue
和User
,我正在使用它来表示来自服务器的数据。 在“问题”和“用户”之间存在多对多的关系,当从服务器获取问题时,对象具有一组用户ID。
后来,当我从服务器获取用户时,我希望能够find存储的具有匹配ID的问题。
我一直计划使用可转换的属性来存储每个问题的用户ID。 但是,我读过可转换的属性不可查询。 真的吗? 如果是这样,我如何创build一个可查询的数组属性?
无法查询作为实体的可变形属性存储的数组中的条目是正确的。
一种可能的解决scheme是在Issue
实体中将用户ID列表存储为以逗号分隔的string属性,然后search匹配的ID,如下所述: 从包含id的stringformsNSPredicate 。
在阅读和创build问题时,一个不同的解决scheme是在第一遍中已经创build从Issue
到User
的关系。 当您从服务器获取用户标识列表的问题时,您将find或创buildUser
对象并设置关系。
既然你正在使用两对多关系的实体,为什么不用核心数据来实现关系呢? 即在Issue
实体中的usersSet
(比如说)将是一个NSSet
, User
的issuesSet
也是一个NSSet
。 如果是这样的话,你可以通过下面的方式实现一个谓词来轻松地得到你想要的:
(下面的代码假定Issue
到User
之间的多对多关系是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
)。