ファイルのアイコンを取得する
一つ前のエントリーでは端折っていたが、ファイルのアイコンを取得するのが目的で、pathをあれこれやってあれってなったのであんなエントリーを残した。
せっかくなのでアイコン取得もメモ。
pathをStringでアイコン取得する場合。
//_fullPath はこんなのが来てる。 @"file://localhost/directory/index.html"; NSString *filePath = [[_fullPath stringByReplacingOccurrencesOfString:@"file:/localhost" withString:@""] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; return [[NSWorkspace sharedWorkspace] iconForFile:filePath];
とかやる。前のエントリーのは、このケースでいうとfile://localhostを置換しようとしているのに、実際にはここに渡って来る前の文字列生成処理で、file:/localhostが渡ってきてた&decodeも抜けてたという話。
NSURLでアイコンを取得
//_fullPath はこんなのが来てる。 @"file://localhost/directory/index.html"; NSURL *fileUrl = [NSURL URLWithString:_fullPath]; NSImage *image=nil; [fileUrl getResourceValue:&image forKey:NSURLEffectiveIconKey error:NULL]; return image;
file:/localhost状態の文字列をNSURLにして、アイコン取得できなくて、StringでもNSURLでもアイコンが取得出来ないなあと調べたら、file:/localhostになっちゃってるじゃないかというのが、前回のエントリの真相でした。
file://localhost/...を使っているのは、アプリがWebViewメインのものなので、このほうが都合がいいため。