On 3/27/12 1:50 PM, Rick Mann wrote:
> 
> On Mar 27, 2012, at 12:05 , Mike Abdullah wrote:
> 
>> Show us some code.
> 
>     NSURL* url = [NSURL URLWithString: ci.diskURI];
>     if ([fm fileExistsAtPath: url.absoluteString])
>     {
>         NSLog(@"File exists: %@", url.absoluteString);
>     }
>     
>     NSError* err = nil;
>     [fm removeItemAtURL: url error: &err];
>     if (err != nil)
>     {
>         NSLog(@"Unable to delete file at %@: %@\n%@", url, err, err.userInfo);
>     }

As David already pointed out you should probably be using file URLs.

There are a couple other issues:

1) You shouldn't handle errors by testing (err != nil).  This might work
(since you initialized err to nil) assuming that removeItemAtURL: isn't
fiddling with err anyway, but it's not guaranteed.  The preferred
approach is to test the return value of removeItemAtURL: (it returns
BOOL for a reason!) and examine err iff the method returns NO.

2) Less likely, but still reasonably plausible since you are working
with cache files (which I imagine have other clearance mechanisms), is
that you are encountering a race condition.  It's possible that another
thread removed the file in the intervening time between your
fileExistsAtPath: and removeItemAtURL: calls.  This is a major reason
why it's usually not useful to to ask "can I delete a file?" but rather
to try "delete the file!" and handle any errors appropriately.


-- 
Conrad Shultz

Synthetiq Solutions
www.synthetiqsolutions.com
_______________________________________________

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

Reply via email to