It is a bit of a knotty problem. I've ended up with: - (BOOL)ks_isEqualToURL:(NSURL *)otherURL; { BOOL result = [self isEqual:otherURL]; // For file: URLs the default check might have failed because they reference the host differently. If so, fall back to checking paths if (!result && [self isFileURL] && [otherURL isFileURL]) { result = [[self path] isEqualToString:[otherURL path]]; } return result; }
From here: https://github.com/karelia/KSFileUtilities/blob/master/KSURLUtilities.m Part of the problem really is expressing what equality you actually want to test. For example, it's perfectly legal for a file URL to have a query or fragment. But the filesystem will ignore that, rendering it obsolete for a URL comparison. Thus the only safe way to test equality as you want here is to compare paths. On 28 May 2011, at 00:13, Sean McBride wrote: > Hi all, > > What is the correct way to test if two NSURLs refer to the same file > system object? > > I've just learnt the hard way that one can have two URLs that refer to > the same file system object but because they are subtly different, > isEqual: returns NO: > > ex: > > <file://localhost/Volumes/Disk/Users> > vs > <file:///Volumes/Disk/Users> > > isEqual: returns NO. I guess this makes some sense, but it's not the > kind of equality I'm looking for. > > What would best practice be? Convert to full path, and compare those? > Note: I'm not concerned about resolving symlinks or aliases. > > (Aside: I was surprised to see that there is no isEqualToURL:, analogous > to isEqualToString, isEqualToSet, etc. I wonder why...) > > Thanks, > > -- > ____________________________________________________________ > Sean McBride, B. Eng s...@rogue-research.com > Rogue Research www.rogue-research.com > Mac Software Developer Montréal, Québec, Canada > > > _______________________________________________ > > 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: > http://lists.apple.com/mailman/options/cocoa-dev/cocoadev%40mikeabdullah.net > > This email sent to cocoa...@mikeabdullah.net _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com