0

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

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

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

4

2 回答 2

3

您不能查询存储为实体的可转换属性的数组中的条目是正确的。

一种可能的解决方案是将用户 ID 列表作为逗号分隔的字符串属性存储在Issue实体中,然后按照此处所述搜索匹配的 ID: Form NSPredicate from string that contains id's

一个不同的解决方案是在阅读和创建问题时,在第一遍中创建从Issue到已经的关系。User当您从服务器收到带有用户 ID 列表的问题时,您将查找或创建User对象并设置关系。

于 2013-03-11T12:03:37.963 回答
0

既然您正在使用具有多对多关系的两个实体,为什么不使用核心数据来实现关系呢?即实体中的usersSet(比如说)将是一个,而in也将是一个。如果是这种情况,您可以通过以下方式实现谓词以轻松获得所需的内容:IssueNSSetissuesSetUserNSSet

Issue(下面的代码假设 to 之间的一对多关系UserusersSet。)

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)。

于 2013-03-11T13:40:04.343 回答