Versión Swift 4.x
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")
}
Versión Swift 3.x
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")
}
Versión Swift 2.x , necesita usar URLByAppendingPathComponent
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")
}
Verifique el siguiente código:
Swift 1.2
Swift 2.0
fuente
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
absoluteString
para convertirNSURL
apath
, pero sería mejor que sólo seguir el camino como una cadena (NSString
) como se hace en Swift 1.2.Hoy en día (2016) Apple recomienda cada vez más usar la API relacionada con URL de
NSURL
,NSFileManager
etc.Para obtener el directorio de documentos en iOS y Swift 2 use
El
try!
es seguro en este caso porque se garantiza que este directorio estándar existe.Luego agregue el componente de ruta apropiado, por ejemplo, un
sqlite
archivoAhora compruebe si el archivo existe con
checkResourceIsReachableAndReturnError
deNSURL
.Si necesita el error, pase el
NSError
puntero al parámetro.Swift 3+:
checkResourceIsReachable
está marcado como puede lanzarPara considerar solo el valor de retorno booleano e ignorar el error, utilice el operador de fusión nula
fuente
checkResourceIsReachable()
y solo regresaBool
porURL
tipo.try - catch
patrón de @KendallHelmstetterGelner Swift no arroja excepciones. No es comparable con excepciones en Objective-C. Es un sistema eficiente de manejo de errores.Es bastante fácil de usar. Simplemente trabaje con el singleton predeterminado de NSFileManager y luego use el
fileExistsAtPath()
método, que simplemente toma una cadena como argumento y devuelve un Bool, lo que permite que se coloque directamente en la instrucción if.Tenga en cuenta que el downcast a String no es necesario en Swift 2.
fuente
Un patrón de código alternativo / recomendado en Swift 3 sería:
Uso de manejo de excepciones
fuente
Swift 4.2
Utilizando: -
fuente
Para el beneficio de los principiantes de Swift 3 :
Aquí hay una muestra de código para verificar si existe un archivo llamado "database.sqlite" en el directorio de documentos de la aplicación:
fuente
Muy simple: si su ruta es una instancia de URL, conviértala en cadena mediante el método 'ruta'.
fuente
Esto funciona bien para mí en swift4:
Puede verificar con esta llamada:
Espero que sea útil para alguien. @; -]
fuente
Debe agregar una barra inclinada "/" antes del nombre de archivo, u obtendrá una ruta como "... / DocumentsFilename.jpg"
fuente
Swift 4 ejemplo:
Puse el cheque en mi función loadData que invoqué en viewDidLoad.
Luego definí loadData a continuación.
fuente
trabaja en Swift 5
donde
"userInfo"
- nombre del archivo y"sqlite3"
- extensión del archivofuente