首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过Spotlight文件元数据属性/ NSArray过滤文件urls的NSMetadataQuery?

如何通过Spotlight文件元数据属性/ NSArray过滤文件urls的NSMetadataQuery?
EN

Stack Overflow用户
提问于 2016-11-30 17:51:17
回答 1查看 150关注 0票数 0

NSMetadataQuery类似乎是Finder/Spotlight通过其元数据搜索文件的方式。

由基础框架提供的NSMetadataQuery类。查询可以在两种模式下运行:异步的,异步的和动态更新的异步的。第一个简单地对初始搜索时存在的文件执行搜索。后者继续寻找。将数据更新为满足或不再完成搜索参数更新的文件。

ref/doc/uid/TP40001843-BBCFBCAG

但是,它似乎面向提供一个目录(searchScopes),然后异步返回在这些目录(NSMetadataQueryDidFinishGathering)中找到的结果。

I已经有了一个包含文件urls的NSArray,I希望使用与Spotlight搜索相同的元数据和查询语法来构造对这些NSURL的筛选/搜索。但是,我将提供一个文件列表,以快速归档,而不是提供一个目录和接收异步结果。

代码语言:javascript
运行
复制
// Something like this...
let imageFileTypePredicate = NSPredicate(fromMetadataQueryString: "(kMDItemGroupId = 13)")
let imageURLs = allURLs.filter{ imageFileTypePredicate.evaluate(with:$0) };

但是,它使用的是标准的NSPredicate搜索,而不是文件元数据筛选器,并且正在抛出错误:

此类与键_kMDItemGroupId不兼容键值编码。

下面列出了我感兴趣的Spotlight元数据属性:

ref/doc/uid/TP40001694-SW1

如何使用Spotlight元数据过滤文件urls数组?

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 08:05:32

为每个url创建一个MDItem,以获取文件的聚光灯属性。

MDItem是一个与CF兼容的对象,表示与文件相关的文件和元数据。

https://developer.apple.com/reference/coreservices/1658213-mditem

代码语言:javascript
运行
复制
MDItemRef item = MDItemCreateWithURL(kCFAllocatorDefault, url);
CFArrayRef attributes = MDItemCopyAttributeNames(item);
NSDictionary *attributeValues = CFBridgingRelease(MDItemCopyAttributes(item, attributes));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40895007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档