It looks like on Cocoa there are many ways to move file/folder-directory to Trash:
This is deprecated, as of OS X 10.11, so no point in using it.
This is probably the one you want. It's asynchronous, so your application can continue to operate while the files are being moved to the trash.
This is similar to option 2, but it's synchronous, and only handles one file at a time.
This doesn't trash the file, it deletes it permanently, and immediately.
This is just like option 4, except using a file:// URL instead of a path. More-convenient when you already have a URL rather than a path.
The reference pages for NSWorkspace and NSFileManager cover all of the differences between these methods fairly well.
Here's a quick sample, which uses recycleUrls: to delete a file or folder named "Junk" on the user's desktop:
- (IBAction)deleteJunk:(id)sender {
NSFileManager *manager = [NSFileManager defaultManager];
NSURL *url = [manager URLForDirectory:NSDesktopDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; // get Desktop folder
url = [url URLByAppendingPathComponent:@"Junk"]; // URL to a file or folder named "Junk" on the Desktop
NSArray *files = [NSArray arrayWithObject: url];
[[NSWorkspace sharedWorkspace] recycleURLs:files completionHandler:^(NSDictionary *newURLs, NSError *error) {
if (error != nil) {
//do something about the error
NSLog(@"%@", error);
}
for (NSString *file in newURLs) {
NSLog(@"File %@ moved to %@", file, [newURLs objectForKey:file]);
}
}];
}