2015-12-07 13 views
22

Wie ist es möglich?NSFileManager.defaultManager(). FileExistsAtPath gibt false anstelle von true zurück

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

Dies ist 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 

Und man kann sehen, daß es dort ist, wo es sein sollte:

enter image description here

Was ist los?

+0

können Sie das Dokumentenverzeichnis func Printdocument drucken() { lassen pathToFile = NSSearchPathForDirectoriesInDomains (NSSearchPathDirectory.CachesDirectory, .UserDomainMask, true) [0] do { lassen namesOfFile = versuchen Manager.contentsOfDirectoryAtPath (pathToFile) für Namen in namesOfFile { print ("name: \ (Name)") } } catch lassen Fehler als NSError { print ("Druck: \ (Fehler)") } } – kholl

+0

so offenbar die Datei nicht existiert. Wie speichern Sie es – kholl

Antwort

48

Anscheinend ist Ihre path Variable ein NSURL (beschreibt einen Dateipfad). Um den Pfad als einen String zu erhalten, verwenden Sie die path Eigenschaft, nicht absoluteString:

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

absoluteString gibt die URL in einem String-Format, einschließlich der file: Schema usw.

Beispiel:

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

Es hat funktioniert, was ist der Unterschied, da es völlig identisch ist, wenn ich es drucke? –

+1

@ BartłomiejSemańczyk der Unterschied ist absoluteString enthält auch 'file: //' wie folgt: 'file: /// Benutzer/kuna/...', Pfad gibt nur '/ Benutzer/kuna/...' – BigHeadCreations

2

Wenn Sie prüfen möchten, ob ein Pfad vorhanden ist, sollten Sie den Pfad

überprüfen
let url = NSURL(string: "balabala") 

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

Dies ist die richtige Antwort und du hast +1 aber du solltest klarer sein. if (DateiManager.default.fileExists (atPath: url? .path.path)) –

Verwandte Themen