NSPredicate 使用核心数据实体的属性
Posted
技术标签:
【中文标题】NSPredicate 使用核心数据实体的属性【英文标题】:NSPredicate using Core Data entity's attribute 【发布时间】:2012-09-19 04:24:44 【问题描述】:我有个人和团队实体,其中许多人可以属于一个团队。我正在尝试使用该人的号码和团队的名称创建一个 NSPredicate 。因此,此请求将检查 Core Data 中是否已经存在一个编号为 N 并且属于 T 团队的人。但是,我无法使谓词工作,以便我可以获取 TEAM 的属性进行比较.
我目前的谓词如下:
request.predicate = [NSPredicate predicateWithFormat:@"(team.name LIKE %@) AND (number == %@)", [[personInfo objectForKey:PLAYS_FOR] name], [personInfo objectForKey:PERSON_NUMBER]];
在我看来,谓词的第一部分(team.name LIKE %@)是问题所在。任何帮助,将不胜感激!谢谢!
【问题讨论】:
【参考方案1】:试试:
[NSPredicate predicateWithFormat:@"(name ==[c] %@) AND (number == %@)", [[personInfo objectForKey:PLAYS_FOR] name], [personInfo objectForKey:PERSON_NUMBER]];
【讨论】:
嗯,不这样做。我认为问题在于从“team.name LIKE %@”中的“团队”实体获取“名称”属性。这不是以谓词格式获取对象属性的正确方法吗?【参考方案2】:您需要在团队实体和玩家实体之间建立关系。
1人1队,1队多人。
这就是为什么在玩家实体中添加一个关系并检查 player.team == %@ AND player.number == %d。
【讨论】:
让我进一步解释一下我想要做什么。我在 NSDictionary 中有球员数据,现在我想看看 CoreData 中是否有球员已经共享了这个数据(具有相同的编号并且属于同一个团队)。所以我希望使用用户输入的一些松散数据来查询数据库。 你能给我字典的键吗? 是的,它只是 PLAYS_FOR 和 PERSON_NUMBER,其中字典是 personInfo [NSPredicate predicateWithFormat:@"PLAYS_FOR == %@ AND number == %d", @"lackers", 12]; 让我知道你是否有包含字典的数组。以上是关于NSPredicate 使用核心数据实体的属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSPredicate 搜索核心数据实体的 NSArray 属性