Objective c 中间人从何处获得;添加日期“;文件夹中某个项目的名称?

Objective c 中间人从何处获得;添加日期“;文件夹中某个项目的名称?,objective-c,cocoa,macos-carbon,Objective C,Cocoa,Macos Carbon,如果文件夹放在Dock中,您可以按“添加日期”对其排序-这通常是下载文件夹的默认值。(有时,查找器似乎没有使用添加的日期,而是使用修改的日期,但它可以找到添加的日期。)查找器从何处找到这一点?标准文件元数据(即stat、getattrlist或FSGetCatInfo获得的元数据)不包含该元数据。TIA注意:现在Lion已经过时了 发现者不是,码头是。它在内部跟踪这些数据。如果删除文件夹并将其放回,则现有项目的“添加日期”信息将丢失。是的,添加的日期可以从其他结构推断出来。事实上,它驻留在Spo

如果文件夹放在Dock中,您可以按“添加日期”对其排序-这通常是下载文件夹的默认值。(有时,查找器似乎没有使用添加的日期,而是使用修改的日期,但它可以找到添加的日期。)查找器从何处找到这一点?标准文件元数据(即stat、getattrlist或FSGetCatInfo获得的元数据)不包含该元数据。TIA

注意:现在Lion已经过时了


发现者不是,码头是。它在内部跟踪这些数据。如果删除文件夹并将其放回,则现有项目的“添加日期”信息将丢失。

是的,添加的日期可以从其他结构推断出来。事实上,它驻留在Spotlight元数据中

NSDate *dateAdded(NSURL *url)
{
    NSDate *rslt = nil;
    MDItemRef inspectedRef = nil;

    inspectedRef = MDItemCreateWithURL(kCFAllocatorDefault, (CFURLRef)url);
    if (inspectedRef){
        CFTypeRef cfRslt = MDItemCopyAttribute(inspectedRef, (CFStringRef)@"kMDItemDateAdded");
        if (cfRslt) {
            rslt = (NSDate *)cfRslt;
        }
    }
    return rslt;
}

以下是Swift 5.x的版本:

公共扩展URL{
var dateAdded:日期{
如果让metadataItemValue=MDItemCreateWithURL(kCFAllocatorDefault,(自身作为CFURL)){
将MDItemCopyAttribute(metadataItemValue,KmditemDateAdd)返回为?日期
}
归零
}
}

我已经在Swift 4.x上测试过了,如果您也需要的话,我认为它可以编译回Swift 3.x,而无需修改。请注意,在Swift 5之前,其推断可见性将是
内部
,而不是
公共

听起来是合理的解释。但是看看-现在这是一个谣言网站,有些人可能会说这些照片都是假的,但它确实显示了支持按日期排序的狮子搜寻者。。。因此,苹果可能会在10.7版本的操作系统(无论是在文件系统内部还是外部)或Finder中添加这种跟踪功能?完全有可能,这并不难做到。但它还没有出现。我希望我错过了一些东西,添加的日期可以从其他结构中推断出来,但没有答案。至于Lion可能/可能不做什么,讨论这个问题的论坛是错误的@JensAyton那么我如何获取所有文件夹的日期?