使用 NSPredicate 遍历多个 Core Data 对象

Posted

技术标签:

【中文标题】使用 NSPredicate 遍历多个 Core Data 对象【英文标题】:Traversing multiple Core Data objects using NSPredicate 【发布时间】:2009-03-02 08:24:07 【问题描述】:

我遇到了 Cocoa 中的核心数据模型的问题。这可能是一个相当基本的问题。我的核心数据模型的一部分如下所示。给定 OutputCell 实体中单元格属性的值,我想返回相关的 HistogramBar。

我正在使用以下谓词,但它只返回一个空数组。我已经设法使用直方图实体使其工作,但我似乎无法从 HistogramBar 通过直方图遍历到 OuputCell。我使用的谓词是:

NSEntityDescription *histogramBarEntityDescription = [NSEntityDescription entityForName:@"HistogramBar" 
                                                                inManagedObjectContext:[theDocument managedObjectContext]];
NSFetchRequest *histogramBarRequest = [[[NSFetchRequest alloc] init] autorelease];
[histogramBarRequest setEntity:histogramBarEntityDescription];
NSPredicate *histogramBarPredicate = [NSPredicate predicateWithFormat:@"(histogram.outputCell.cell = %@)", theOutputCell];
[histogramBarRequest setPredicate:histogramBarPredicate];
NSError *histogramBarError = nil;
NSArray *histogramsArray = [[theDocument managedObjectContext] executeFetchRequest:histogramBarRequest 
     error:&histogramBarError];

感谢您的帮助。

【问题讨论】:

你能多贴一点代码吗?我想查看整个提取请求。 我刚刚添加了额外的代码。 【参考方案1】:

我的问题已解决,代码中的恶意注释阻止了 HistogramBar 实体的创建。在这种情况下,对一些 NSLog 的详细检查有助于发现问题。

【讨论】:

以上是关于使用 NSPredicate 遍历多个 Core Data 对象的主要内容,如果未能解决你的问题,请参考以下文章

Core Data NSPredicate 按数组中的项目过滤项目集

如何通过 NSPredicate 过滤 Core Data 托管对象?

iPhone如何使用NSPredicate按父实体过滤Core Data?

ios 如何正确使用 NSPredicate 来匹配 Core Data 的 NSString?

Core Data 中的 URI 类型属性:如何使用 NSPredicate 进行查询

Core Data 使用类似于 BEGINSWITH 的东西为 NSNumber 创建 NSPredicate