你如何在Cocoa中创建一个别名?符号链接是否足够好?

zek*_*kel 2 macos cocoa objective-c

我找不到一种方便的方法来创建一个别名,所以我选择了一个符号链接.我担心这可能不够好.也许这个图标没有显示在某些版本的OS X或类似的东西上.

[[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:destPath error:nil];
Run Code Online (Sandbox Code Playgroud)

这种事情我能做的最好吗? http://www.danandcheryl.com/2009/08/how-create-alias-programmatically

Bar*_*ark 11

答案取决于您使用的是OS X 10.5还是10.6.在10.6中,旧的AliasManger已被替换为NSURL书签数据.要创建别名,给定一个NSURL实例:

NSURL *url = [NSURL fileURLWithPath:pathToAliasTarget];
NSError *err = nil;
NSData *bookmarkData = [url bookmarkDataWithOptions: NSURLBookmarkCreationSuitableForBookmarkFile includingResourceValuesForKeys:nil relativeToURL:nil error:&err];

if(bookmarkData == nil) {
  //handle NSError in err
} else {
  if(![NSURL writeBookmarkData:bookmarkData toURL:aliasFileURL options:NSURLBookmarkCreationSuitableForBookmarkFile error:&err]) {
    //handle NSError in err
  }
}
Run Code Online (Sandbox Code Playgroud)

正如Peter Hosey指出的那样,使用NSURLAPI 编写的书签数据与AliasManager例程不兼容.如果必须支持OS X <10.6,则必须直接使用Carbon AliasManager API,或者使用Objective-C包装器之一.我喜欢Wolf Renstch的分支BDAlias,可以在这里找到.