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

如何在Objective-C中获取最近的文件夹历史记录?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我想获取最近访问的文件夹列表。如何实现它?Finder将“最近使用的文件夹”菜单中的项目存储在: 此信息不适用于其他应用程序,因此格式可能会更改,恕不另行通知 仍然可以使用NSUserDefaults或CFPreferences检索列表 下面的代码在约塞米蒂工作。我没有包括任何错误检查: //Read the latest changes. CFPreferencesAppSynchronize(CFSTR("com.apple.finder")); //Retrieve the folder

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

Finder将“最近使用的文件夹”菜单中的项目存储在:

此信息不适用于其他应用程序,因此格式可能会更改,恕不另行通知

仍然可以使用NSUserDefaults或CFPreferences检索列表

下面的代码在约塞米蒂工作。我没有包括任何错误检查:

//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]);

}

哪一部分比较难?您只需创建一个文件路径数组,然后将其传递到菜单。是否可以通过代码获取最近的文件夹历史记录?谢谢~它工作正常
//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]);

}