2012-10-04 9 views
14

Tôi đã truy xuất NSURL từ NSSavePanel. bây giờ tôi có NSURL này mang đến cho tôi những điều sau đây:Cách lấy thành phần đường dẫn/thư mục từ NSURL?

file://localhost/Users/brett/Documents/asdf%20asdf.json

Bây giờ, nó rất dễ dàng cho tôi để lấy chỉ là tên tập tin sử dụng giống như sau:

[[[NSFileManager defaultManager] displayNameAtPath:pathAndFilename] stringByDeletingPathExtension]

này mang lại cho tôi chỉ tên tệp được bản địa hóa, như mong đợi: asdf%20asdf

Vì vậy, làm cách nào để có được đường dẫn, như vậy:file://localhost/Users/brett/Documents/

Trả lời

27

Bạn có thể sử dụng phương thức NSString để làm việc với đường dẫn tệp. Ví dụ,

NSString *directory = [[URL absoluteString] stringByDeletingLastPathComponent]; 
NSString *filename = [[URL absoluteString] lastPathComponent]; 

Bạn có thể tìm thấy phương pháp hữu ích khác trong Apple Documents: NSString Class Reference ->Làm việc với đường dẫn phần

+0

Tôi biết rằng, theo như tên tập tin mà đi, nó không phải là một chuỗi cục bộ. Đó là lý do tại sao tôi đã sử dụng displayNameAtPath: message tới NSFileManager. Câu trả lời tốt mặc dù! – Brett

+0

@Brett Dù sao thì tôi nghĩ tôi đã trả lời câu hỏi của bạn về việc nhận thư mục tệp. Hoặc bạn đang mong đợi điều gì? – Nekto

+0

Bạn đã trả lời đúng, tôi chỉ sợ sử dụng chức năng NSString thay vì chức năng NSURL. Có lẽ tôi không nên. Cảm ơn! – Brett

30

-[NSURL URLByDeletingLastPathComponent] là cách đơn giản nhất để đạt được điều này.

+0

Tốt hơn nhiều so với 'NSString'. – Nestor

+0

Làm rõ: Thư mục NSURLURL = [URL của tệp URLByDeletingLastPathComponent]; – iamjustaprogrammer

1

Trực tiếp từ NSSavePanel của bạn:

NSSavePanel *savePanel; 
... 
NSString *path = savePanel.directoryURL.path;