Каков код, необходимый для создания псевдонима Finder из приложения Cocoa? Существуют ли различия для этого кода между OS X 10.5, 10.6 и 10.7?Как создать псевдоним Finder в приложении?
ответ
Поскольку OS X 10.6 вы можете использовать NSUrl
«s writeBookmarkData:toURL:options:error:
метод
Из documentation:
Создает файл псевдонимов на диск в указанном месте с указанными данными закладок.
Пример кода:
NSURL *originalUrl = [NSURL fileURLWithPath:@"/this/is/your/path"];
NSURL *aliasUrl = [NSURL fileURLWithPath:@"/your/alias/path"];
NSData *bookmarkData = [originalUrl bookmarkDataWithOptions: NSURLBookmarkCreationSuitableForBookmarkFile includingResourceValuesForKeys:nil relativeToURL:nil error:NULL];
if(bookmarkData != nil) {
BOOL success = [NSURL writeBookmarkData:bookmarkData toURL:aliasUrl options:NSURLBookmarkCreationSuitableForBookmarkFile error:NULL];
if(NO == success) {
//error
}
}
Однако псевдонимы, созданные таким образом, не имеют обратную совместимость с более ранних версий, OS X (до 10,6)
Поскольку меня интересовала хотя бы OS X 10.6, это тот ответ, который я искал. Нет ничего плохого в коде Carbon в приложении Cocoa, но я предпочитаю использовать Cocoa, когда это возможно. – kiamlaluno
Лучше поздно, чем никогда, не так ли? :-) – codingFriend1
Да, это так. ':)' – kiamlaluno
Вы хотите -[NSFileManager linkItemAtPath:toPath:error:]
. AFIK, он и связанные с ним методы являются предпочтительным средством для всех версий.
Не является ли псевдоним отличным от ссылки? Я думаю, что я прочитал псевдоним Finder как некоторые функции, которых нет в ссылке, что сделало бы предпочтительными ссылки. – kiamlaluno
Жесткие ссылки (как созданные с сообщенной функцией) не могут быть созданы на томе, отличном от исходного. Искатель Finder в сочетании между мягкой ссылкой и жесткой ссылкой, что означает, что псевдоним Finder будет действителен даже при перемещении файла, и можно установить псевдоним на другой том, чем исходный том. – kiamlaluno
Жесткая ссылка: * ничего, как псевдоним. Жесткая привязка файла помещает его в два места или под двумя разными именами (или обоими) сразу. Он не создает новый файл либо специального типа (символическая ссылка), либо со специальным содержимым (псевдоним или закладка). –
Посмотрите на How to Create an Alias Programmatically.
- (void)makeAliasToFolder:(NSString *)destFolder inFolder:(NSString *)parentFolder withName:(NSString *)name
{
// Create a resource file for the alias.
FSRef parentRef;
CFURLGetFSRef((CFURLRef)[NSURL fileURLWithPath:parentFolder], &parentRef);
HFSUniStr255 aliasName;
FSGetHFSUniStrFromString((CFStringRef)name, &aliasName);
FSRef aliasRef;
FSCreateResFile(&parentRef, aliasName.length, aliasName.unicode, 0, NULL, &aliasRef, NULL);
// Construct alias data to write to resource fork.
FSRef targetRef;
CFURLGetFSRef((CFURLRef)[NSURL fileURLWithPath:destFolder], &targetRef);
AliasHandle aliasHandle = NULL;
FSNewAlias(NULL, &targetRef, &aliasHandle);
// Add the alias data to the resource fork and close it.
ResFileRefNum fileReference = FSOpenResFile(&aliasRef, fsRdWrPerm);
UseResFile(fileReference);
AddResource((Handle)aliasHandle, 'alis', 0, NULL);
CloseResFile(fileReference);
// Update finder info.
FSCatalogInfo catalogInfo;
FSGetCatalogInfo(&aliasRef, kFSCatInfoFinderInfo, &catalogInfo, NULL, NULL, NULL);
FileInfo *theFileInfo = (FileInfo*)(&catalogInfo.finderInfo);
theFileInfo->finderFlags |= kIsAlias; // Set the alias bit.
theFileInfo->finderFlags &= ~kHasBeenInited; // Clear the inited bit to tell Finder to recheck the file.
theFileInfo->fileType = kContainerFolderAliasType;
FSSetCatalogInfo(&aliasRef, kFSCatInfoFinderInfo, &catalogInfo);
}
Вы также можете использовать AppleScript
osascript -e 'tell application "Finder" to make alias file to POSIX file "/Applications/myapp.app" at POSIX file "/Applications/"'
Вы также можете проверить [BDAlias library] (https://github.com/rentzsch/bdalias). –
Следует отметить, что это решение является устаревшим (устаревшим) способом. Используйте это, только если нужно, и используйте 'writeBookmarkData', если сможете. См. Http://stackoverflow.com/questions/37309635/, чтобы узнать, как создать файл закладок из записи Alias. –
Создает файл псевдонимов на диске при заданном местоположение с заданными данными закладок с помощью Swift3.
Пример кода:
let url = URL(string: "originalURL")
let aliasUrl = URL(string: "aliasURL")
do{
let data = try url.bookmarkData(options: .suitableForBookmarkFile, includingResourceValuesForKeys: nil, relativeTo: nil)
try URL.writeBookmarkData(data, to: aliasUrl)
}catch{}
- 1. Open Finder псевдоним
- 2. Как создать псевдоним файла в iOS?
- 3. Как создать псевдоним пути?
- 4. Как создать псевдоним Bash?
- 5. Как создать псевдоним правильно
- 6. Как создать псевдоним ресурса?
- 7. Как создать псевдоним в моллюсках
- 8. как создать псевдоним в Баш
- 9. создать службу в контексте Finder
- 10. Как псевдоним пространства имен в приложении codeigniter?
- 11. Как создать псевдоним домена (сопоставление)
- 12. Как создать псевдоним домена www?
- 13. Как создать псевдоним для «окна»?
- 14. Как создать псевдоним типа DOM?
- 15. Как создать псевдоним std :: tuple?
- 16. Как создать псевдоним запроса MySQL?
- 17. Как создать параметризованный псевдоним bash?
- 18. Как создать папку со значком Finder?
- 19. Создать псевдоним тега в HAML
- 20. Создать многословный псевдоним в bash?
- 21. Создать псевдоним URL? в PHP
- 22. создать псевдоним с аргументом
- 23. Создать псевдоним переменной?
- 24. Как создать псевдоним реляционного поля в Odoo?
- 25. Как создать псевдоним таблицы в MySQL
- 26. Как создать ip-псевдоним в nodejs
- 27. Как создать псевдоним для Ctags в vimscript
- 28. Как «создать» псевдоним типа закрытия в Swift?
- 29. Как создать псевдоним для каталога в ipython?
- 30. Как создать псевдоним команды в Matlab
Один из способов сделать это, чтобы встроить некоторые AppleScript в ваше приложение, это имеет функции, чтобы сделать это. См. Документы. – Cocoadelica