我想在我的应用程序中显示“上次打开”日期,就像在 Finder 预览或信息面板中一样。但是我意识到这与我将获得的最后访问日期不同
NSDate* lastAccessDate = [fileUrl resourceValuesForKeys:@[NSURLContentAccessDateKey] error:NULL][NSURLContentAccessDateKey];
或与
struct stat buf;
stat(curName, &buf);
time_t lastAccessDate = buf.st_atimespec.tv_sec;
这些返回 Unix 上次访问时间,它也显示在终端中,ls -l
但是 Finder 显示不同的值,该值仅在用户打开文件时才会更改(例如通过双击)
我读了帖子'获取真正的“最后打开”日期?和 '“最后打开”日期',但这些并没有解决它。他们推荐类似的东西
MDItemRef itemRef = MDItemCreateWithURL(NULL, (__bridge CFURLRef)fileUrl);
NSArray *attributeNames = (__bridge NSArray *)MDItemCopyAttributeNames(itemRef);
NSDictionary *attributes = (__bridge NSDictionary *) MDItemCopyAttributes(itemRef, (__bridge CFArrayRef) attributeNames);
CFDateRef lastUsedCfDate = MDItemCopyAttribute(itemRef, kMDItemLastUsedDate);
NSDate* lastUsedDate = (__bridge NSDate*) lastUsedCfDate;
CFRelease(itemRef);
但attributeNames
没有价值kMDItemLastUsedDate
。在我的情况下,该数组中恰好有 24 个值,但没有最后一次使用。lastUsedDate
也是nil
... _
另外我想知道是否真的没有高级 API 可以访问最后打开的日期。