如何使用 NSPredicate 过滤包含 NSMetadataitems 的对象数组
How to use a NSPredicate to filter an array of objects that contain NSMetadataitems
我有一个class。让我们称之为 class MyObject
。 MyObject
有一个名为 属性 的项目是 NSMetadataItem
。
NSMetadataItem
s 有一个名为 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 中输入。
我有一个class。让我们称之为 class MyObject
。 MyObject
有一个名为 属性 的项目是 NSMetadataItem
。
NSMetadataItem
s 有一个名为 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 中输入。