Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The operation couldn’t be completed. Operation not permitted

Tags:

iphone

nsdata

Very strange problem with my iPhone App. We have an App that has been approved and is in sales at the App Store. It contains a feature to download some database updates. The update comes in a ZIP via HTTP. The problem is that I cannot save this downloaded ZIP because I get the "The operation couldn’t be completed. Operation not permitted" error.

BUT: this happens on 2 phones out of 10. If a phone cannot save the file it cannot do at all. If I redownload the app from the store it does not change it. But those phones who are capable to save the ZIP are always capable. All phones run the same iOS version and all of them are iPhone 4. This really drives me crazy.

If I start XCode one phone gives no error in debug the other gives. And they always give.

Here is the code:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[activeResponse release];
[theConnection release];

NSLog(@"%d", [receivedData length]);
NSString *s = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding];
NSLog(@"%@", s);
[s release];
[theRequest release];   
NSString *path = [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], @"temp.zip"];
NSLog(path);
NSError * error;
if ([receivedData writeToFile:path options:NSDataWritingAtomic error:&error])
    NSLog(@"Success");
else 
    NSLog(@"Error");
if (error)
    NSLog([error description]);

Any ideas, please?

like image 244
Teddy Avatar asked Apr 08 '11 20:04

Teddy


People also ask

How do I fix Operation not permitted on Mac?

When you encounter the error message Operation not permitted on Mac Terminal, you can enable Full Disk Access to Terminal in System Preferences in the first step. If this still does not help, you can disable the System Integrity Protection temporarily to remove the Terminal error.

What does undefined error mean on Iphone?

Question: Q: Safari error 'undefined' Answer: A: Answer: A: That's a message from the server, not from Safari. It means that the server isn't working.


1 Answers

You are not allowed to write to the application bundle, I'm surprised it works on any of your devices. There are various places you can write, depending on what your purpose is:

  • If you want to store the file until you delete it, write to the documents directory: [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
  • If you want to allow the system to delete it if the device is running low on space (and don't care if it is saved when the device is backed up), use the caches directory: [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]
  • If you're just saving it temporarily while you process it and will delete it right away, use the temporary directory: NSTemporaryDirectory()

Also, BTW, it might be cleaner to use [directory stringByAppendingPathComponent:filename] rather than [NSString stringWithFormat:@"%@/%@", directory, filename] to construct paths.

like image 50
Anomie Avatar answered Oct 12 '22 21:10

Anomie