アプリの並びをソートする。ソートはアプリケーションの URLではなく名前で行う。現状名前のリストは持っていない。そこでアプリのURL、名前、アイコンを保持する小さなモデルクラスを用意し、ここに compare: メソッドを実装することにした。
AppEntry.h
@interface AppEntry : NSObject
{
NSURL* _url;
NSString* _name;
NSImage* _image;
}
@property (retain) NSURL* url;
@property (retain) NSString* name;
@property (retain) NSImage* image;
#compre: は nameで比較すれば良い。
- (NSComparisonResult)compare:(AppEntry*)entry
{
return [_name compare:entry.name];
}
その上で Launch Services API から取得したアプリ一覧を元に一旦 AppEntryのインスタンスを作り、配列へ入れておく。そしてその配列へ sortedArrayUsingSelector: を投げてやる。
NSArray* sorted_entry_list = [entry_list sortedArrayUsingSelector:@selector(compare:)];
できた。
サンプル:FindingAllApps-4.zip