gpt4 book ai didi

ios - NSPredicate 和 NSInvalidArgumentException 中的 SUBQUERY

转载 作者:可可西里 更新时间:2023-11-01 04:06:37 25 4
gpt4 key购买 nike

我在 Core Data 中设置了以下模型。

Book has a to-many relationship, called toBookOrders, with OrderBook entity. The inverse is called toBook.
Book has a BOOL value property called isSync.

我设置了以下 NSPredicate

NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:moc];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF)"];

通过这个谓词,我只需要获取尚未同步的书籍及其相关顺序。

这是我收到的错误。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF)"

有什么想法吗?提前谢谢你。

最佳答案

问题的症结在于:

@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF)"

如果按照 Scott 的建议将其拆分为两个子谓词,您将得到:

  • isSync == 0
  • SUBQUERY(toBookOrders, $x, $x.toBook == SELF)

问题是每个 SUBQUERY 都不会像谓词那样返回 true 或 false。它返回一个集合(一个数组),而数组与 true 或 false 不是一回事。因此,当您创建谓词时,您会收到一个错误,指出它是一种无效格式,因为 AND 之后的内容 不是谓词。这只是一个表达式。

可能想要:

@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF).@count > 0"

这将为您提供一个谓词来查找所有 isSync 为假的书籍,并且该书的 OrderBooks 中至少有一本是那本书。

关于ios - NSPredicate 和 NSInvalidArgumentException 中的 SUBQUERY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com