os x 程式碼方式新增資料夾到Finder收藏欄中
阿新 • • 發佈:2019-02-17
手動的方式
直接拖拽資料夾到Finder左側欄的收藏欄中就可以了
程式碼方式
使用 LSSharedFileList 函式新增,使用的是CoreService framework,需要引入#import CoreServices/CoreServices.h
- (IBAction)btnAction:(id)sender { // 例如桌面上有aa bb cc dd 四個資料夾 NSArray *pathArr = @[@"/Users/lan/Desktop/aa" , @"/Users/lan/Desktop/bb", @"/Users/lan/Desktop/cc", @"/Users/lan/Desktop/dd"]; // 在當前使用者home 目錄下建立 sidebar 隱藏資料夾,再在隱藏資料夾下建立 sidebarTest 資料夾 NSString *homePath = NSHomeDirectory(); NSString *faPath = [homePath stringByAppendingPathComponent:@".sidebar/sidebarTest"]; NSFileManager *manager = [NSFileManager defaultManager]; NSError *erro; if([manager createDirectoryAtPath:faPath withIntermediateDirectories:YES attributes:nil error:&erro]) { if (erro) { NSLog(@"create direct error %@", erro); return; } }; // 建立符號連結到 sidebarTest 目錄下 NSString *pathName = nil; for (NSString *path in pathArr) { pathName = [path lastPathComponent]; [manager createSymbolicLinkAtPath:[faPath stringByAppendingPathComponent:pathName] withDestinationPath:path error:nil]; } // 把 sidebarTest 檔案加新增到 Finder 側欄的收藏欄中 LSSharedFileListRef sflRef = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); if (!sflRef) return; CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:faPath]; LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(sflRef, kLSSharedFileListItemBeforeFirst, NULL, NULL, url, NULL, NULL); CFRelease(sflRef); CFRelease(item); }
注意
LSSharedFileListItemRef 等方法在10.11後已經不贊成使用了,你可以嘗試使用 Finder 外掛,或者你有更好的方法請告訴我。