Skip to content

Instantly share code, notes, and snippets.

@revilon1991
Last active July 28, 2021 22:33
Show Gist options
  • Save revilon1991/82b7ca63bdac199581ef31d2b4ef227c to your computer and use it in GitHub Desktop.
Save revilon1991/82b7ca63bdac199581ef31d2b4ef227c to your computer and use it in GitHub Desktop.
How open a modal window and save chosen path to bookmarks on osx [objective c]
NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
[openPanel setCanChooseFiles:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanCreateDirectories:YES];
[openPanel beginWithCompletionHandler:^(NSInteger result) {
if (result == NSModalResponseOK) {
for (NSURL *fileURL in [openPanel URLs]) {
NSString *filename = [fileURL path];
[[NSUserDefaults standardUserDefaults] setObject:filename forKey:@"your_key_for_bookmark"];
NSError *error = nil;
NSData *bookmark = [fileURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&error];
if (error) {
NSLog(@"Error creating bookmark for URL (%@): %@", fileURL, error);
[NSApp presentError:error];
} else {
[[NSUserDefaults standardUserDefaults] setObject:bookmark forKey:@"your_key_for_bookmark"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"Creating bookmark: %@", [NSString stringWithFormat:@"%@", bookmark]);
NSError *error = nil;
NSData *bookmark = [[NSUserDefaults standardUserDefaults] objectForKey:@"your_key_for_bookmark"];
NSURL *bookmarkedURL = [
NSURL URLByResolvingBookmarkData:bookmark
options:NSURLBookmarkResolutionWithSecurityScope
relativeToURL:nil
bookmarkDataIsStale:nil
error:&error
];
BOOL ok = [bookmarkedURL startAccessingSecurityScopedResource];
NSLog(@"Accessed ok: %d %@", ok, [bookmarkedURL relativePath]);
}
break;
}
}
}];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment