2015-12-07 15 views
22

Come è possibile?NSFileManager.defaultManager(). FileExistsAtPath restituisce false anziché true

let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) 
print("exists: \(exists)") //false 

Questo è path.absoluteString

//file:///Users/kuna/Library/Developer/CoreSimulator/Devices/92BD140D-5C14-43C4-80D6-904BB9594ED6/data/Containers/Data/Application/5B818832-BB19-4047-A7F8-1487F36868D6/Documents/wishlists/68/147/128/IMG_0006.PNG 

e si può vedere che è lì dove dovrebbe essere:

enter image description here

Che cosa sta succedendo?

+0

è possibile stampare il documento PrintDocument directory func() { lasciare pathtofile = NSSearchPathForDirectoriesInDomains (NSSearchPathDirectory.CachesDirectory, .UserDomainMask, true) [0] fare { lasciare namesOfFile = provare Manager.contentsOfDirectoryAtPath (pathtofile) per il nome in namesOfFile { di stampa ("nome: \ (nome)") } } catch lasciare errore come NSError { di stampa ("print: \ (errore)") } } – kholl

+0

così apparentemente il file non esiste. Come lo salvate – kholl

risposta

48

Apparentemente la variabile path è una NSURL (che descrive un percorso file). Per ottenere il percorso come una stringa, utilizzare la proprietà path, non absoluteString:

if let filePath = path.path { 
    let exists = NSFileManager.defaultManager().fileExists(atPath: filePath) 
} 

absoluteString restituisce l'URL in un formato di stringa, compreso lo schema file: ecc

Esempio:

let url = NSURL(fileURLWithPath: "/path/to/foo.txt") 

// This is what you did: 
print(url.absoluteString) 
// Output: file:///path/to/foo.txt 

// This is what you want: 
print(url.path!) 
// Output: /path/to/foo.txt 
+2

Ha funzionato, qual è la differenza dato che è completamente uguale quando lo stampo? –

+1

@ BartłomiejSemańczyk la differenza è absoluteString include anche 'file: //' come questo: 'file: /// Users/kuna/...', percorso restituisce '/ Users/kuna/...' – BigHeadCreations

2

Se si desidera verificare se esiste un percorso, è necessario verificare il percorso

let url = NSURL(string: "balabala") 

let path = url?.path 
//Check path 
+0

Questo è il risposta giusta e hai +1, ma dovresti essere più chiaro. if (FileManager.default.fileExists (atPath: url? .path.path)) –

Problemi correlati