Just a quick follow up on this. It's been stated that it's unsafe to check the error returned from -writeToURL:atomically:encoding:error: and rather one should check the return value. Is this a general statement for other methods which fill an error object on error? For example, what about NSFileManager's -attributesOfItemAtPath:error: ? The documentation makes no statement about the return value in the case of error. Is it standard that the return value will be nil? Or should I check the error object in this case?
This thread triggered me to check through the whole project for places where I check for non-nil error objects. There are a number, so I'd like to ensure I'm doing the right thing in each case. Any insight gratefully received. Martin On 23, Jun, 2012, at 07:59 PM, Eeyore wrote: > In general, it is not safe to assume that errors from Cocoa frameworks are > cleared when an operation succeeds (in fact, I believe that they they are > almost never cleared). The only way to determine if "writeToURL" succeeds is > to test the return value (not the error). If the return value is YES, the > error is garbage. If the return value is NO, the error will have meaning. > > NSError *error = nil; > BOOL success = [content writeToURL:aURL atomically:YES encoding:encoding > error:&error]; > if (!success) > { > [NSApp presentError:error]; > return NO; > } > > Aaron > > On Jun 23, 2012, at 10:50 AM, Martin Hewitson wrote: > >> Dear list, >> >> I have an interesting bug report from a user of an app of mine. The app >> manages files and allows the user to edit them. When they save the project >> each file is saved to disk (if necessary). They are experiencing what >> appears to be a false positive of writeToURL:atomically:encoding:error:. The >> file actually does save, but the error comes back non-nil and when presented >> says: >> >> "You don’t have permission to save the file “XXX” in the folder “YYY”. >> >> The piece of code I use is >> >> NSError *error = nil; >> [content writeToURL:aURL atomically:YES encoding:encoding error:&error]; >> if (error) { >> [NSApp presentError:error]; >> return NO; >> } >> >> By giving the user a debug version of the app with lots of NSLog statements, >> we narrowed it down to the above code. So even though the file is saved, >> 'error' comes back non-nil. >> >> Has anyone seen such behaviour before, or does anyone have any idea how to >> further investigate this? >> >> Best wishes, >> >> Martin >> >> >> >> >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/cocoa-dev/eeyore%40monsterworks.com >> >> This email sent to eey...@monsterworks.com > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Martin Hewitson Albert-Einstein-Institut Max-Planck-Institut fuer Gravitationsphysik und Universitaet Hannover Callinstr. 38, 30167 Hannover, Germany Tel: +49-511-762-17121, Fax: +49-511-762-5861 E-Mail: martin.hewit...@aei.mpg.de WWW: http://www.aei.mpg.de/~hewitson ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com