• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: dealing with alias files, finding URL to target file
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dealing with alias files, finding URL to target file


  • Subject: Re: dealing with alias files, finding URL to target file
  • From: Sean McBride <email@hidden>
  • Date: Fri, 15 Apr 2011 14:10:03 -0400
  • Organization: Rogue Research Inc.

On Fri, 15 Apr 2011 11:22:45 -0500, Ken Thomases said:

>>> Yes.  Bookmark data is the modern replacement for alias records.  The
>>> new bookmark APIs are backward compatible with aliases, including alias
>>> files.  See the documentation for +[NSURL
>>> bookmarkDataWithContentsOfURL:error:].  You'd follow that with -
>>> URLByResolvingBookmarkData:options
>:relativeToURL:bookmarkDataIsStale:error:.
>>
>> Yeah, that works, but is not easy.
>
>Eh, seems easy enough to me.

I can't agree.  _This_ is easy:

url = [url URLByResolvingSymlinksInPath];

_this_ is a PITA:

- (NSURL*)URLByResolvingSymlinksAndAliases
{
	NSURL* resultURL = [self URLByResolvingSymlinksInPath];

	NSError* error = nil;
	NSNumber* isAliasFile = nil;
	BOOL success = [resultURL getResourceValue:&isAliasFile
										forKey:NSURLIsAliasFileKey
										 error:&error];
	if (success && [isAliasFile boolValue])
	{
		NSData* bookmarkData = [NSURL bookmarkDataWithContentsOfURL:resultURL
															  error:&error];
		if (bookmarkData)
		{
			BOOL isStale = NO;
			NSURLBookmarkResolutionOptions options =
(NSURLBookmarkResolutionWithoutUI |
													  NSURLBookmarkResolutionWithoutMounting);

			NSURL* resolvedURL = [NSURL URLByResolvingBookmarkData:bookmarkData
														   options:options
													 relativeToURL:nil
											   bookmarkDataIsStale:&isStale
															 error:&error];
			if (resolvedURL)
			{
				resultURL = resolvedURL;
			}
		}
	}

	return resultURL;
}

Especially since, again, the Mac UI doesn't even let you create
symlinks, but does let you create aliases.  It seems to me the symlink
case should be the convoluted case.

But, as you say, category methods are a nice thing to have!

Thanks,

--
____________________________________________________________
Sean McBride, B. Eng                 email@hidden
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: dealing with alias files, finding URL to target file
      • From: Quincey Morris <email@hidden>
References: 
 >dealing with alias files, finding URL to target file (From: Sean McBride <email@hidden>)
 >Re: dealing with alias files, finding URL to target file (From: Ken Thomases <email@hidden>)
 >Re: dealing with alias files, finding URL to target file (From: Sean McBride <email@hidden>)
 >Re: dealing with alias files, finding URL to target file (From: Ken Thomases <email@hidden>)

  • Prev by Date: Injecting text into a CALayer?
  • Next by Date: Re: Cocoa witch's broom
  • Previous by thread: Re: dealing with alias files, finding URL to target file
  • Next by thread: Re: dealing with alias files, finding URL to target file
  • Index(es):
    • Date
    • Thread