2012-05-25 60 views

回答

3

獲取共享的文件列表僅僅是第一部分,你可能仍然希望得到一個實際的字符串對象與你的路徑。這裏有一段代碼片段,它可以讓你在取景器邊欄的收藏夾部分爲每個對象獲取路徑。

UInt32 seed; 
LSSharedFileListRef sflRef = LSSharedFileListCreate(NULL, 
                kLSSharedFileListFavoriteItems, 
                NULL); 
CFArrayRef items = LSSharedFileListCopySnapshot(sflRef, &seed); 
for(size_t i = 0; i < CFArrayGetCount(items); i++) 
{ 
    LSSharedFileListItemRef item = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(items, i); 
    if(!item) 
     continue; 
    CFURLRef outURL = NULL; 
    LSSharedFileListItemResolve(item, kLSSharedFileListNoUserInteraction, (CFURLRef*) &outURL, NULL); 
    if(!outURL) 
     continue; 
    //The actual path string of the item 
    CFStringRef itemPath = CFURLCopyFileSystemPath(outURL,kCFURLPOSIXPathStyle); 
    // TODO: Do whatever you want to do with your path here!!!! 
    CFRelease(outURL); 
    CFRelease(itemPath); 
} 
CFRelease(items); 
CFRelease(sflRef); 
3

本身沒有Cocoa API。您將使用LSSharedFileList API。 API是公共的,但唯一的文檔是頭文件/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h。您需要kLSSharedFileListFavoriteItems(也可能是kLSSharedFileListFavoriteVolumes)列表類型。

+0

你能寫代碼示例嗎?我不確定我瞭解如何使用它。 – Kira

2

使用LSSharedFileList API(LaunchServices/LSSharedFileList.h。)

LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL, 
                  kLSSharedFileListFavoriteItems, NULL); 
+0

感謝這就是我需要的。 – Kira