Swift 4.x Version
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
if let pathComponent = url.appendingPathComponent("nameOfFileHere") {
let filePath = pathComponent.path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
} else {
print("FILE PATH NOT AVAILABLE")
}
Swift 3.x Version
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = URL(fileURLWithPath: path)
let filePath = url.appendingPathComponent("nameOfFileHere").path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Swift 2.x- Version, muss URLByAppendingPathComponent verwenden
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
let filePath = url.URLByAppendingPathComponent("nameOfFileHere").path!
let fileManager = NSFileManager.defaultManager()
if fileManager.fileExistsAtPath(filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Überprüfen Sie den folgenden Code:
Swift 1.2
Swift 2.0
quelle
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
absoluteString
zum KonvertierenNSURL
in verwenden,path
aber es wäre besser, den Pfad einfach als Zeichenfolge (NSString
) beizubehalten, wie Sie es in Swift 1.2 tun.Heute (2016) empfiehlt Apple mehr und mehr die URL verwandte API von zu verwenden
NSURL
,NSFileManager
usw.Verwenden Sie zum Abrufen des Dokumentenverzeichnisses in iOS und Swift 2
Das
try!
ist in diesem Fall sicher, da dieses Standardverzeichnis garantiert existiert.Fügen Sie dann die entsprechende Pfadkomponente hinzu, z. B. eine
sqlite
DateiÜberprüfen Sie nun, ob die Datei mit
checkResourceIsReachableAndReturnError
von existiertNSURL
.Wenn Sie den Fehler benötigen, übergeben Sie den
NSError
Zeiger auf den Parameter.Swift 3+:
checkResourceIsReachable
ist markiert als werfen kannVerwenden Sie den Operator nil-coalescing, um nur den booleschen Rückgabewert zu berücksichtigen und den Fehler zu ignorieren
quelle
checkResourceIsReachable()
und kehrt nurBool
fürURL
Typ zurück.try - catch
Muster löst keine Ausnahmen aus. Es ist nicht vergleichbar mit Ausnahmen in Objective-C. Es ist ein effizientes Fehlerbehandlungssystem.Es ist ziemlich benutzerfreundlich. Arbeiten Sie einfach mit dem defaultManager-Singleton von NSFileManager und verwenden Sie dann die
fileExistsAtPath()
Methode, die einfach eine Zeichenfolge als Argument verwendet und einen Bool zurückgibt, sodass dieser direkt in die if-Anweisung eingefügt werden kann .Beachten Sie, dass der Downcast zu String in Swift 2 nicht erforderlich ist.
quelle
Ein alternatives / empfohlenes Codemuster in Swift 3 wäre:
Verwendung der Ausnahmebehandlung
quelle
Swift 4.2
Verwenden von: -
quelle
Für Swift 3- Anfänger:
Hier ist ein Codebeispiel, um zu überprüfen, ob eine Datei mit dem Namen "database.sqlite" im Verzeichnis des Anwendungsdokuments vorhanden ist:
quelle
Sehr einfach: Wenn Ihr Pfad eine URL-Instanz ist, konvertieren Sie sie mit der Methode 'path' in einen String.
quelle
Das funktioniert gut für mich in swift4:
Sie können mit diesem Anruf überprüfen:
Ich hoffe es ist nützlich für jemanden. @; -]
quelle
Sie müssen vor dem Dateinamen einen Schrägstrich "/" einfügen, sonst erhalten Sie einen Pfad wie "... / DocumentsFilename.jpg".
quelle
Swift 4 Beispiel:
Ich habe die Prüfung in meine loadData-Funktion eingefügt, die ich in viewDidLoad aufgerufen habe.
Dann habe ich unten loadData definiert.
quelle
arbeitet bei Swift 5
Dabei werden
"userInfo"
- Dateiname und"sqlite3"
- Dateierweiterungquelle