基于其他实体列表中的内容谓词NSFetchRequest核心数据

时间:2013-08-11 03:01:01

标签: ios sql core-data social-networking

我有以下核心数据模型:

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

ContactStatus有first_user_id(整数),second_user_id(整数)和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语句的获取请求来查询托管对象上下文。问题是我不知道如何使用来自不同实体的联系状态实体的谓词来过滤用户。

1 个答案:

答案 0 :(得分:0)

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

在任何情况下,根据您当前的实现(假设您的查询目标实体为ContactStatus)。

您的谓词应该类似于:

[NSPredicate predicateWithFormat:@"(first_user_id = %@ OR second_user_id) AND status = %@",@(u_id),@(u_id),@"CONF"];