0

私はMac用のプログラミングに慣れていないので、私の質問がばかげている場合はご容赦ください。

宛先フォルダーを設定する必要がある小さなアプリケーションを作成しています。NSButton 「フォルダの選択」を使用するのではなく、FirefoxまたはSafariで「名前を付けて保存...」ダイアログを使用するアプローチは非常にユーザーフレンドリーだと思います。

を使用してNSPopUpButton、ユーザーのお気に入りから、または最後に使用したフォルダーからフォルダーを選択できます。さらに、一番上のエントリ「Choose ...」を追加します。これにより、が開きますNSOpenPanel

私の質問は次のとおりです。たとえば、Finderアプリケーションに表示される、ユーザーのお気に入りのフォルダを取得して、NSPopUpButtonそれらを入力するにはどうすればよいですか。

Firefoxでの表示は次のとおりです。

4

1 に答える 1

2

Application Services フレームワーク内で関連する関数を見つけることができ、次のような項目のリストを取得できます。

LSSharedFileListRef favorites = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
CFArrayRef snapshot = LSSharedFileListCopySnapshot(favorites, NULL);

CFIndex snapshotCount = CFArrayGetCount(snapshot);
for (CFIndex i = 0; i < snapshotCount; ++i) {
    LSSharedFileListItemRef item = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(snapshot, i);
    CFURLRef itemURL = NULL;
    LSSharedFileListItemResolve(item, kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes, &itemURL, NULL);

    NSLog(@"%@", itemURL);
    if (itemURL != NULL) {
        CFRelease(itemURL);
    }
}
CFRelease(snapshot);
CFRelease(favorites);

これを自分のコンピューターで実行すると、次のようになります。

nwnode://domain-AirDrop
file://localhost/Applications/
file://localhost/System/Library/CoreServices/Finder.app/Contents/Resources/MyLibraries/myDocuments.cannedSearch/
file://localhost/Users/dave/
file://localhost/Users/dave/Desktop/
file://localhost/Users/dave/Developer/
file://localhost/Users/dave/Documents/
file://localhost/Users/dave/Downloads/
file://localhost/Users/dave/Dropbox/

以下に対応します。

ここに画像の説明を入力

于 2012-08-19T14:36:38.480 に答える