何らかの理由で、バンドル内のファイルと異なるボリュームにあるファイルに対してこれを行うことはできません。
この問題が発生しているのは私だけですか? そうでない場合、どうすれば解決できますか?
問題が発生しているのと同じファイルの Spotlight プロパティを 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 のメタデータをどのように取得しますか?