Iphone 在哪里可以找到核心数据NSPredicate子查询功能的文档?

Iphone 在哪里可以找到核心数据NSPredicate子查询功能的文档?,iphone,core-data,Iphone,Core Data,在哪里可以找到NSPredicate核心数据子查询功能的文档?好问题。。。这似乎没有很好的记录 以下是我的发现: 大多数文档可在上找到。它包含两个示例和语法:子查询(集合表达式、变量表达式、谓词) 简要介绍子查询表达式和NSSubqueryExpressionType,这是在谓词中指定子查询时使用的 找到文档的最合理的地方是,但它只是被提到了几次;在、和部分中 您可以尝试,但这只返回53个结果 更新: 随着应用程序扩展的增加,苹果已经包含了更多的子查询示例,因为它们是复杂匹配逻辑所必需的

在哪里可以找到NSPredicate核心数据子查询功能的文档?

好问题。。。这似乎没有很好的记录

以下是我的发现:

  • 大多数文档可在上找到。它包含两个示例和语法:
    子查询(集合表达式、变量表达式、谓词)
  • 简要介绍子查询表达式
    NSSubqueryExpressionType
    ,这是在谓词中指定
    子查询
    时使用的
  • 找到文档的最合理的地方是,但它只是被提到了几次;在、和部分中
  • 您可以尝试,但这只返回53个结果
更新:

随着应用程序扩展的增加,苹果已经包含了更多的子查询示例,因为它们是复杂匹配逻辑所必需的

  • 在的部分中,它现在包括一个如何匹配UTI的示例:

    SUBQUERY (
        extensionItems,
        $extensionItem,
        SUBQUERY (
            $extensionItem.attachments,
            $attachment,
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
        ).@count == $extensionItem.attachments.@count
    ).@count == 1
    
  • 您可以在《应用程序扩展编程指南》>《应用程序扩展概要》中找到更复杂的示例:

  • 除其他几个NSPredicate功能外,还有一个讨论子查询的


本质上,每个
子查询
相当于Swift中的
过滤器
。而
ANY
等同于
contains

再举一个例子:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
    ).@count == $extensionItem.attachments.@count
).@count == 1
在Swift中类似于此:

extensionItems.filter {
  $0.attachments.filter {
    $0.registeredTypeIdentifiers.contains {
      $0.utiConformsTo("com.adobe.pdf")
    }
  }.count == $0.attachments.count
}.count == 1

事实上,这项功能似乎完全没有文档记录。多可怜的人啊,看起来很酷。我只能猜测:他们担心人们会过度使用它,因为它看起来真的很重。或者没有足够的人向苹果公司提交雷达文件,让它变得足够重要。如果您想查看有关此功能的文档,请提交雷达文件。
extensionItems.filter {
  $0.attachments.filter {
    $0.registeredTypeIdentifiers.contains {
      $0.utiConformsTo("com.adobe.pdf")
    }
  }.count == $0.attachments.count
}.count == 1