如何在Objective-C中获取最近的文件夹历史记录?

时间:2015-08-08 01:09:37

标签: objective-c macos cocoa

我想获取最近访问过的文件夹列表。如何实现呢?

1 个答案:

答案 0 :(得分:2)

FinderRecent Folders菜单中的项目存储在:

~/Library/Preferences/com.apple.finder.plist

此信息不适用于其他应用程序,因此格式如有更改,恕不另行通知。

您仍然可以使用NSUserDefaultsCFPreferences检索列表。

以下代码适用于Yosemite。我没有包含任何错误检查:

//Read the latest changes.
CFPreferencesAppSynchronize(CFSTR("com.apple.finder"));

//Retrieve the folder list.
NSArray* folderList = (__bridge_transfer NSArray*)
                            CFPreferencesCopyAppValue(CFSTR("FXRecentFolders"), CFSTR("com.apple.finder"));
for (NSDictionary* currentFolder in folderList) {

    //Print name.
    NSLog(@"Name: %@", [currentFolder objectForKey:@"name"]);

    //Print path.
    NSURL* folderURL = [NSURL URLByResolvingBookmarkData:[currentFolder objectForKey:@"file-bookmark"]
                                                 options:NSURLBookmarkResolutionWithoutUI |
                                                         NSURLBookmarkResolutionWithoutMounting
                                           relativeToURL:nil
                                     bookmarkDataIsStale:nil
                                                   error:nil];
    NSLog(@"Path: %@", [folderURL path]);

}