我是Mac编程的新手,如果我的问题太傻了,请原谅我。
我正在编写一个小型应用程序,需要在其中设置目标文件夹。
我认为,Firefox或Safari带有“另存为...”对话框的方法不只是使用NSButton
“选择文件夹”,而是一种非常用户友好的方法。
使用NSPopUpButton
,可以从用户的收藏夹或最后使用的文件夹中选择一个文件夹。另外,我将添加一个最上面的条目“选择...”,这将打开一个NSOpenPanel
。
我的问题是:如何获取用户喜欢的文件夹,例如在Finder应用程序中,并用它们填充我的NSPopUpButton
吗?
在Firefox中的外观如下:
最佳答案
您可以在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/
对应于:
关于objective-c - 如何用用户喜欢的文件夹填充NSPopUpButton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12026438/