Я новичок в программировании для Mac, так что простите меня, если мой вопрос слишком глуп.
Я пишу небольшое приложение, где мне нужно установить папку назначения. Я думаю, что вместо того, чтобы просто использовать NSButton "Выберите папку", подход, который используют Firefox или Safari с их диалоговыми окнами "Сохранить как...", очень удобен для пользователя. один.
Использование NSPopUpButton, где можно выбрать папку из избранного пользователя или из последних использованных папок. Кроме того, я бы добавил самую верхнюю запись "Выбрать...", которая открывала бы файл NSOpenPanel.
Мой вопрос: как я могу получить любимые папки пользователя, которые отображаются, например. в приложении Finder и заполнить ими мой NSPopUpButton?
Вот как это выглядит в Firefox: 
Ответ 1 · рейтинг 2 · Dave DeLong
Вы можете найти соответствующие функции в среде 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/
Что соответствует: