Mã cần thiết để tạo bí danh Finder từ ứng dụng Cocoa là gì? Có bất kỳ sự khác biệt nào đối với mã đó giữa OS X 10.5, 10.6 và 10.7 không?Làm cách nào để tạo bí danh Trình tìm kiếm trong một ứng dụng?
Trả lời
Kể từ OS X 10.6, bạn có thể sử dụng NSUrl
's writeBookmarkData:toURL:options:error:
phương pháp
Từ documentation:
Tạo một tập tin bí danh trên đĩa tại vị trí được chỉ định với dữ liệu dấu trang được chỉ định.
Mẫu mã:
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
}
}
Tuy nhiên, bí danh tạo ra theo cách đó không tương thích ngược với các phiên bản hệ điều hành trước đó X (pre 10,6)
Vì tôi quan tâm đến ít nhất OS X 10.6, đây là câu trả lời tôi đang tìm kiếm. Không có gì sai với mã Carbon trong một ứng dụng Cocoa, nhưng tôi thích sử dụng Cocoa, khi có thể. – kiamlaluno
Tốt hơn bao giờ hết, phải không? :-) – codingFriend1
Vâng, đúng vậy. ':)' – kiamlaluno
Bạn muốn -[NSFileManager linkItemAtPath:toPath:error:]
. AFIK, nó và các phương pháp liên quan của nó là phương tiện ưu tiên trên tất cả các phiên bản.
Không phải là một bí danh khác với liên kết? Tôi nghĩ rằng tôi đọc rằng một bí danh Finder như một số tính năng không có trong một liên kết, mà sẽ làm cho nó thích hợp hơn để liên kết. – kiamlaluno
Các liên kết cứng (như được tạo với chức năng được báo cáo) không thể được tạo trên ổ đĩa khác với mã nguồn. Một bí danh Finder trong kết hợp giữa liên kết mềm và liên kết cứng, có nghĩa là bí danh Finder sẽ hợp lệ ngay cả khi tệp được di chuyển và có thể đặt bí danh trên một ổ đĩa khác với khối lượng nguồn. – kiamlaluno
Liên kết cứng là * không có gì * giống như bí danh. Liên kết cứng một tập tin đặt nó ở hai nơi hoặc dưới hai tên khác nhau (hoặc cả hai) cùng một lúc. Nó không tạo ra một tập tin mới của một loại đặc biệt (liên kết tượng trưng) hoặc với các nội dung đặc biệt (bí danh hoặc đánh dấu). –
Hãy xem 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);
}
Bạn cũng có thể sử dụng AppleScript
osascript -e 'tell application "Finder" to make alias file to POSIX file "/Applications/myapp.app" at POSIX file "/Applications/"'
Bạn cũng có thể xem [Thư viện BDAlias] (https://github.com/rentzsch/bdalias). –
Cần lưu ý rằng giải pháp này là cách lỗi thời (không dùng nữa). Sử dụng điều này chỉ khi bạn phải, và sử dụng 'writeBookmarkData' nếu bạn có thể. Xem http://stackoverflow.com/questions/37309635/ để tìm hiểu cách tạo tệp dấu trang từ bản ghi Bí danh. –
Tạo một tập tin bí danh trên đĩa tại một quy định vị trí với dữ liệu dấu trang được chỉ định bằng Swift3.
Sample Code:
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. Làm cách nào để tạo Bí danh Tìm kiếm Macintosh Từ Dòng Lệnh?
- 2. Làm cách nào để tạo bí danh bảng trong MySQL
- 3. Làm cách nào để tạo "Bí danh" trong Apache Tomcat?
- 4. Làm cách nào để tạo bí danh Bash?
- 5. Làm cách nào để áp dụng hiệu ứng chống bí danh phông chữ trong CSS?
- 6. Làm thế nào để bạn khai báo một bí danh loại trong một hàm tạo scala?
- 7. Làm cách nào để giữ bí mật ứng dụng?
- 8. Drupal: Làm cách nào để tạo một bí danh URL có lập trình cho một nút đã có bí danh khi lưu nút?
- 9. Tạo thanh tìm kiếm như trong ứng dụng Danh bạ iOS 7
- 10. Cách tìm kiếm một mục trong Danh sách trong Erlang?
- 11. Tạo bí danh trong các emacs?
- 12. Làm cách nào để đặt bí danh một bảng trong truy vấn Eloquent Laravel (hoặc sử dụng Trình tạo truy vấn)?
- 13. Tìm kiếm một danh sách sử dụng một chuỗi
- 14. Cách tạo bí danh IP trên Windows
- 15. Cách sử dụng hoạt ảnh để tạo hiệu ứng tìm kiếm động
- 16. Làm thế nào để hướng dẫn trình biên dịch tạo một bí danh cho một hàm ảo?
- 17. Android Market, Vị trí kết quả tìm kiếm Bí ẩn
- 18. Làm thế nào để tìm kiếm một mô hình trình phát trong COD với OpenCV
- 19. Tôi làm cách nào để sử dụng các lệnh bí danh có xarg?
- 20. danh sách tìm kiếm cakephp
- 21. tìm kiếm tiêu điểm trong ứng dụng
- 22. Tôi làm cách nào để tạo phiên bản phát hành của ứng dụng iOS và tải Trình tải ứng dụng của Apple để tìm ứng dụng này?
- 23. Chọn * và tạo bí danh trên một cột
- 24. Làm cách nào để viết bí danh cho grep -R?
- 25. cách tạo mã nhận dạng ứng dụng khách OAuth và bí mật ứng dụng khách?
- 26. Làm thế nào để tìm kiếm một chuỗi trên google sử dụng trình duyệt mặc định
- 27. Tìm kiếm một tham chiếu nodejs, expressjs & mongodb ứng dụng để sử dụng làm mẫu
- 28. Làm cách nào để tạo "bí danh" cho đường dẫn dài?
- 29. Tạo bí danh nhiều từ trong bash?
- 30. Làm cách nào để tạo trang HTML động hoặc được tạo có thể tìm kiếm được?
Một cách để làm điều đó là để nhúng một số AppleScript vào ứng dụng của bạn, điều này có chức năng để làm điều đó. Tham khảo tài liệu. – Cocoadelica