2016-01-11 32 views
5

Tôi đang tìm kiếm một hàm được xác định trước để nhận đường dẫn từ đường dẫn bao gồm tên tệp. Vì vậy, thay vì nhận được tên tập tin tôi muốn phần khác.SWIFT: Chỉ có đường dẫn

Dĩ nhiên tôi có thể làm điều đó như như của riêng tôi:

func PathOnly() -> String { 
    let n = NSURL(fileURLWithPath: self).lastPathComponent?.characters.count 
    return self.Left(self.characters.count - n!) 
} 

khi mở rộng String, nhưng tại sao minh lại bánh xe? :-) Bất kỳ ý tưởng nào?

Trả lời

13

Phương thức NSStringstringByDeletingLastPathComponent và phương pháp NSURL URLByDeletingLastPathComponent thực hiện chính xác những gì bạn muốn.

Ví dụ:

let path = "/foo/bar/file.text" 
let dir = (path as NSString).stringByDeletingLastPathComponent 
print(dir) 
// Output: /foo/bar 


let url = NSURL(fileURLWithPath: "/foo/bar/file.text") 
let dirUrl = url.URLByDeletingLastPathComponent! 
print(dirUrl.path!) 
// Output: /foo/bar 

Cập nhật cho Swift 3:

let url = URL(fileURLWithPath: "/foo/bar/file.text") 
let dirUrl = url.deletingLastPathComponent() 
print(dirUrl.path) 
// Output: /foo/bar 
+0

Cảm ơn bạn, vâng, nó hoạt động như mong đợi. – Peter71

Các vấn đề liên quan