如何使用 NSPredicate 过滤包含 NSMetadataitems 的对象数组

How to use a NSPredicate to filter an array of objects that contain NSMetadataitems

我有一个class。让我们称之为 class MyObjectMyObject 有一个名为 属性 的项目是 NSMetadataItem

NSMetadataItems 有一个名为 NSMetadataItemFSNameKey 的属性,可以使用以下方法获取:

NSString *fileName = [myMetadataItem valueForAttribute: NSMetadataItemFSNameKey];

现在我有一个数组或 MyObjects,我想找到哪个对象有一个项目,NSMetadataItemFSNameKey 就是我要找的项目。

好的,我可以使用以下代码遍历数组:

  for (MyObject *oneObj in array) {
    NSString *oneFileName = [oneObj.item valueForAttribute:NSMetadataItemFSNameKey];
    if ([oneFileName isEqualToString:fileNameItem]) {
      // found, do something
    }
  }

但我想知道是否可以使用 NSPredicates 和过滤来做到这一点?

这可能吗?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"item.%K = %@", NSMetadataItemFSNameKey, fileNameItem];
NSArray *filteresArray = [array filteredArrayUsingPredicate:predicate];

在 Safari 中输入。