0

我有一个包含 bID 和 pID 的 NSManagedObject。在 NSManagedObjects 集合中,我只希望返回一个子集,并且我正在努力寻找正确的 NSPredicate 或从 Core Data 中获取所需内容的方法。

这是我的完整清单:

出价 PID
41 0
42 41
43 0
44 0
47 41
48 0
49 0
50 43

上面有父子关系。

规则:

如果记录的 PID = 0,则表示该记录是父记录。如果记录的 PID != 0,则该记录的 PID 指的是它的父记录的 BID。

例子:

1) BID = 41 是父记录。为什么?因为记录 BID=42 和记录 BID=47 的 PID 为 41,这意味着它们是其 PID 记录的子项。
2) BID = 42 有一个 BID = 41
的父记录。 3) BID = 43 是一个父记录。
4) BID = 44 是父记录。
5) BID = 47 有一个 BID = 41 的父记录,因为它的 PID = 41。参见上面的#1。
6) BID = 48 是父记录。
7) BID = 49 是父记录。
8) BID = 50 是子记录,其父记录的 BID = 43。

看到图案了吗?

现在,基本上,我只想获取以下行:

出价 PID
44 0
47 41
48 0
49 0
50 43

BID = 41、BID = 48、BID = 49 都应该返回,因为没有 PID 等于它们的 BID 的记录。

应该返回 BID = 47,因为它是 PID = 41 的最新子代。
应该返回 BID = 50,因为它是 PID = 43 的最新子代。

希望这有助于更多地解释它。

4

1 回答 1

0

哦,这很简单,你只需要设置谓词bid >= 43。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"bid >= %@", [NSNumber numberWithInt:43]];

我猜你的 NSNumber 可能有问题,因为 Core Data 在 NSNumber 下保存了许多类型,包括:int、BOOL 等……见这里

于 2010-03-16T16:35:02.297 回答