首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSMetadataQuery查找旧文件

使用NSMetadataQuery查找旧文件
EN

Stack Overflow用户
提问于 2013-12-18 09:39:48
回答 1查看 255关注 0票数 0

我需要osx 10.6.7+的解决方案。我试图解决在磁盘上搜索“旧”文件的问题。旧档案我指的是早一年的档案。我已经创建了NSPredicate,但是NSMetadataQuery什么也不返回

代码语言:javascript
复制
NSPredicate * fileTypePredicate = [NSPredicate predicateWithFormat: @"file_type == \"audio\""];
NSPredicate * accessDatePredicate = [NSPredicate predicateWithFormat: @"%K <= %@",  @"kMDItemAccessedDates", timeYearBefore];
return [NSCompoundPredicate andPredicateWithSubpredicates: @[fileTypePredicate, accessDatePredicate]];

我也没有使用kMDItemAccessedDates,而是使用了acess_date,但也没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 07:24:18

对于第一个问题,我不知道为什么要将“file_type”作为受支持的元数据属性。

项的内容类型有两个属性。一个是kMDItemContentType,它是项目内容的直接类型(通常由其文件扩展名确定)。另一个是kMDItemContentTypeTree,它是一个该类型的数组以及它的每个祖先。

要查找音频文件,需要查找kMDItemContentTypeTreekUTTypeAudio相等的项。(是的,即使您确实希望测试数组是否包含类型,但等式测试也适用于此。在终端:mdfind 'kMDItemContentTypeTree == public.audio'上试一试)

在代码中,您应该使用一个双参数格式字符串,就像对第二个谓词一样,但使用==作为操作符:@"%K == %@"作为参数,传递kMDItemContentTypeTree (键)和kUTTypeAudio (在本例中是内容类型)。

至于第二个问题,我在其他任何地方都找不到kMDItemAccessedDatesexactly one other Stack Overflow question。我认为,这个问题的作者可能为他的自定义Spotlight导入器提供了一个关键;您不能期望在一个股票OS系统上找到它。

您可以尝试使用kMDItemLastUsedDate。(不要将它写成字符串文字,在@"…"-just中,kMDItemLastUsedDate中没有任何引号或前面有@。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20654440

复制
相关文章

相似问题

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