По какой-то причине я не могу сделать это для файлов внутри пакетов и файлов, находящихся на разных томах.
Являюсь ли я единственным, кто испытывает эту проблему, и если нет, как мне ее решить?
У Finder, похоже, нет проблем с отображением свойств центра внимания для тех же файлов, с которыми у меня возникают проблемы.
Я хочу получить kMDItemKind файлов, а также некоторые другие свойства.
CFStringRef path = CFSTR("/Applications/Chess.app/Contents/Info.plist"); // bad
// CFStringRef path = CFSTR("/Applications/Chess.app"); // good
MDItemRef item = MDItemCreate(kCFAllocatorDefault, (CFStringRef)path);
if(!item) {
NSLog(@"MDItemCreate returned NULL for path: %@", path);
return nil;
}
CFStringRef kind = MDItemCopyAttribute( item, kMDItemKind );
if(kind) {
NSLog(@"file: %@ kind: %@", path, (NSString*)kind);
CFRelease( kind );
} else {
NSLog(@"file: %@ has no kMDItemKind attribute", path);
}
CFRelease( item );
ВЫХОД:
файл:
/Applications/Chess.app/Contents/Info.plist
не имеет атрибута kMDItemKind
Та же проблема, если я использую инструмент командной строки mdls, например
prompt> mdls /Applications/Chess.app/Contents/Info.plist
kMDItemFSContentChangeDate = 2009-05-19 08:09:03 +0200
kMDItemFSCreationDate = 2009-05-19 08:09:03 +0200
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = 0
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = 0
kMDItemFSLabel = 0
kMDItemFSName = "Info.plist"
kMDItemFSNodeCount = 0
kMDItemFSOwnerGroupID = 0
kMDItemFSOwnerUserID = 0
kMDItemFSSize = 3294
kMDItemFSTypeCode = ""
Как видите, очень мало данных возвращается и kMDItemKind отсутствует
Как вы получите метаданные Info.plist?