Know last used documents in Cocoa

Is there a way to list the most recently used files using cocoa (or objective-c) functions?

I would like to have something like "recent documents"

Thank you for your help.

Hi,

+3
source share
1 answer

Use -[NSDocumentController recentDocumentURLs]. It returns an array of URLs representing the locations of documents recently opened by your application.


Edit based on comment: In this case, you need to use the launch launcher API. For instance:
- (NSArray *)globalRecentDocumentsURLs {
    LSSharedFileListRef recentDocsFileList;
    NSArray *recentDocsFiles;
    NSMutableArray *recentDocsURLs = nil;
    UInt32 seed;

    recentDocsFileList = LSSharedFileListCreate(NULL,
        kLSSharedFileListRecentDocumentItems, NULL);
    if (! recentDocsFileList) return nil;

    recentDocsFiles = (NSArray *)LSSharedFileListCopySnapshot(recentDocsFileList,
        &seed);

    if (recentDocsFiles) {
        recentDocsURLs = [NSMutableArray array];

        for (id file in recentDocsFiles) {
            CFURLRef fileURL = NULL;
            LSSharedFileListItemResolve((LSSharedFileListItemRef)file, 0,
                &fileURL, NULL);
            if (fileURL) [recentDocsURLs addObject:[(id)fileURL autorelease]];
        }

        [recentDocsFiles release];
    }

    CFRelease(recentDocsFileList);

    return recentDocsURLs;
}
+8
source

All Articles