0

我有以下核心数据模型:

用户具有属性 username(string) 和 user_id(integer)。

ContactStatus 具有 first_user_id(integer)、second_user_id(integer) 和 status(字符串,可以是“1REQ”、“2REQ”或“CONF”)。

我想获取一个给定用户的联系人列表,其 user_id 为 u_id,等效的 SQL 将是:

SELECT first_user_id,second_user_id FROM ContactStatuses WHERE (first_user_id == u_id OR second_user_id == u_id) AND status == 'CONF'

或者有没有更好的方法在 Core Data 中组织我的数据?这是它在我的 MySQL 数据库中的组织方式。

编辑:

我的服务器上有一个 MySQL 数据库,在 php/sql 中,如果我想返回用户联系人列表,我会使用上面的查询。当我将此信息(以 JSON 格式)下载到我的 iOS 应用程序时,我想将这些用户的信息存储在托管对象上下文中。然后,当我想向用户显示联系人列表时,我想使用类似于上述 SQL 语句的获取请求来查询托管对象上下文。问题是我不知道如何使用来自不同实体(contactstatus 实体)的谓词来过滤用户。

4

1 回答 1

0

CoreData 是数据的对象图表示,在大多数情况下,它由 SQLite 数据库备份。
我假设您需要将对象与服务器端数据库同步,因此您必须定义自己的user_id属性。但是,在实体和实体
之间建立关系可能对您有意义(这取决于您未列出的实现和应用程序需求)。UserContactStatus

无论如何,在您当前的实现下(假设您的查询目标实体是ContactStatus)。

您的谓词应类似于:

[NSPredicate predicateWithFormat:@"(first_user_id = %@ OR second_user_id) AND status = %@",@(u_id),@(u_id),@"CONF"];
于 2013-08-11T03:27:53.827 回答