访问单个文件的元数据

Man*_*lio 3 macos cocoa metadata objective-c nsmetadataquery

有没有办法以编程方式访问 MacOS 上单个文件的元数据?

我知道苹果提供了NSMetadataQuery,但它似乎只允许在特定文件夹中搜索与某些参数匹配的文件。实际上我不想搜索所有匹配的文件,而是检查特定文件是否匹配。

有没有办法或唯一的解决方案是分析查询结果并查看我的文件是否在其中?

小智 5

您可以按照命令获取其数据的方式获取元数据mdlsMDItemCreate在文档中搜索。(您找到:核心库 --> 数据管理 --> 文件管理 --> MDItem 参考
我希望以下创建元数据字典的方法能够满足您的需求:

- (NSDictionary *) metaDataDictionaryForFileAt:(NSString *)fileName
{
    MDItemRef item = MDItemCreate( kCFAllocatorDefault, (CFStringRef)fileName );
    if( item==nil ) return nil;

    CFArrayRef list = MDItemCopyAttributeNames( item );
    NSDictionary *resDict = (NSDictionary *)MDItemCopyAttributes( item, list );
    CFRelease( list );
    CFRelease( item );
    return [resDict autorelease];
}
Run Code Online (Sandbox Code Playgroud)

备注kMDItemContentType: 、 、的值是由文件名后缀决定的,kMDItemContentTypeTree而不是由文件内容决定的!kMDItemKind