I'm trying to save a file to a path, in a sandboxed application [OS X], but so far am getting an error almost every time I try to save. The error is..

Error saving: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “test.txt” in the folder “Testing”." UserInfo=0x1001f5e70 {NSFilePath=/Users/Seb/Desktop/Testing/test.txt, NSUnderlyingError=0x1001f5d70 "The operation couldn’t be completed. Operation not permitted"}

I have set "User Selected File" of my entitlements to "Read/Write Access".

My code..

NSString *saveLoc = [NSString stringWithFormat:@"%@/%@.txt",[[NSURL URLWithString:[[NSUserDefaults standardUserDefaults] valueForKey:@"saveURL"]] path],self.theWindow.title];
NSURL *saveURL = [NSURL fileURLWithPath:saveLoc];

NSLog(@"Saving to: %@",saveLoc);

NSError *err = nil;
[self.textView.string writeToURL:saveURL atomically:YES encoding:NSUTF8StringEncoding error:&err];

if (err) {
    NSLog(@"Error saving: %@",err);
    [[NSAlert alertWithError:err] beginSheetModalForWindow:self.theWindow
                                                       modalDelegate:nil
                                                      didEndSelector:NULL
                                                         contextInfo:nil];
}

What am I doing wrong? How can I save the file?

Thanks.

有帮助吗?

解决方案

In order to the read/write a file outside the sandbox, you must get user access to that file or one of the directory above. The access can be gained by using NSOpenPanel, NSSavePanel or drag and drop.

The access to those files/directories is lost after the app terminates.

In order to get permanent access to a file/directory selected by the user, you must use Security-Scoped Bookmarks.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top