2016-01-11 36 views
5

Sto cercando una funzione predefinita per ottenere il percorso da un percorso che include il nome file. Quindi, invece di ottenere il nome del file, voglio l'altra parte.SWIFT: solo percorso

Certo che posso farlo come la mia, come:

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

quando estendere String, ma perché reinventare la ruota? :-) Qualche idea?

risposta

13

Il metodo NSStringstringByDeletingLastPathComponent e il metodo NSURL URLByDeletingLastPathComponent fare esattamente quello che vuoi.

Esempio:

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 

Aggiornamento per Swift 3:

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

Grazie, sì, funziona come previsto. – Peter71