NSManagedObject 类关系中的 NSPredicate 键

Posted

技术标签:

【中文标题】NSManagedObject 类关系中的 NSPredicate 键【英文标题】:NSPredicate key inside NSManagedObject class relationship 【发布时间】:2015-04-24 14:48:13 【问题描述】:

我有一个NSArray 这个NSManagedObject 类让我们称之为People,里面有一个与另一个NSManagedObject 类的关系让我们称之为Car,我想谓词第一个NSArray类,它将为我提供汽车的 ID。我是这样做的:

DbCar *c = [self.cars firstObject];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"car.idNum == %@", c.idNum.stringValue];
NSArray *sorted = [self.mainData filteredArrayUsingPredicate:predicate];
self.sortedData = sorted;

self.mainData 是一个 NSArray 持有“人”NSManagedObject

由于某种原因,我总是得到 nil。

提前致谢。

【问题讨论】:

您的谓词正在尝试匹配DbCar 实例上名为car 的属性。这似乎可能不正确,但无法确定。 DbCar 是否有 car 属性? 【参考方案1】:

对于NSNumber 类型的属性不需要传递该数字的stringValue 属性。直接将该数字对象本身作为参数传递给谓词,如下所示:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"car.idNum == %@", c.idNum];

这会有所帮助!

【讨论】:

我只是发现我不需要发送NSNumberstringValue,我可以发送NSNumber 本身或者它是integerValue 是的,你只需要发送`NSNumber`作为参数。

以上是关于NSManagedObject 类关系中的 NSPredicate 键的主要内容,如果未能解决你的问题,请参考以下文章