核心数据获取多对一关系对象

Posted

技术标签:

【中文标题】核心数据获取多对一关系对象【英文标题】:Core Data fetching many-to-one relationship objects 【发布时间】:2013-12-28 01:24:33 【问题描述】:

在我的应用程序中,我有两个实体,它们是 ItemsLists。每个项目只属于一个列表,每个列表有很多项目。因此,在模态中,实体具有以下关系:

    对于Items:一对一关系 (belongs_to_list) 指向一个列表 对于 Lists:多对多关系 (has_items) 指向多个项目

如何使用谓词来获取项目以检查与其相关的列表是否等于我提供的特定列表?我不想通过列表获取项目(比如获取has_items 的对象)。我希望能够在谓词中使用belongs_to_list 将其与我拥有的托管对象进行比较。我尝试了以下但它不工作。有什么帮助吗?

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Items" inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"item_detail" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list.list_name == %@", [self.currentList valueForKey:@"list_name"]];
[fetchRequest setPredicate:predicate];

【问题讨论】:

【参考方案1】:

如果我能很好地理解您的问题,以下谓词将是正确的:

[NSPredicate predicateWithFormat:@"belongs_to_list == %@", [self currentList]];

如果这对你有用,请告诉我。

【讨论】:

嗨,感谢您的回复。当我在它为 nil 时添加此谓词时,它会获取所有内容,当我分配当前列表时,应用程序崩溃。 @user2176995 你能分享一下崩溃日志吗? 崩溃日志中没有打印任何内容。无论如何,我停止使用 NSFetchResultsController。我正在使用正常的方式,现在工作正常。 @user2176995 好的。如果我的回答对您有所帮助,请不要忘记标记为已回答。或者只是投票。干杯。

以上是关于核心数据获取多对一关系对象的主要内容,如果未能解决你的问题,请参考以下文章

flask 定义数据关系(多对一)

Hibernate中一对多和多对一关系

MyBatis之多对一关系

核心数据 - 使用 NSBatchInsertRequest 设置多对一关系

django - 从多对一关系中获取对象集

休眠:多对一关系失败