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];
这会有所帮助!
【讨论】:
我只是发现我不需要发送NSNumber
的stringValue
,我可以发送NSNumber
本身或者它是integerValue
。
是的,你只需要发送`NSNumber`作为参数。以上是关于NSManagedObject 类关系中的 NSPredicate 键的主要内容,如果未能解决你的问题,请参考以下文章
调用 NSArrayController 的 add 的 NSManagedObject 类调用指定初始化程序失败
在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环
将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并