Comment vérifier si un fichier existe dans le répertoire Documents de Swift
?
J'utilise une [ .writeFilePath ]
méthode pour enregistrer une image dans le répertoire Documents et je souhaite la charger à chaque fois que l'application est lancée. Mais j'ai une image par défaut s'il n'y a pas d'image enregistrée.
Mais je ne peux tout simplement pas comprendre comment utiliser la [ func fileExistsAtPath(_:) ]
fonction. Quelqu'un pourrait-il donner un exemple d'utilisation de la fonction avec un argument de chemin passé.
Je pense que je n'ai pas besoin de coller de code car c'est une question générique. Toute aide sera très appréciée.
À votre santé
Vérifiez le code ci-dessous:
Swift 1.2
Swift 2.0
la source
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
absoluteString
pour convertirNSURL
enpath
mais il serait préférable de conserver le chemin sous forme de chaîne (NSString
) comme vous le faites dans Swift 1.2.De nos jours (2016), Apple recommande de plus en plus d'utiliser l'API liée aux URL de
NSURL
,NSFileManager
etc.Pour obtenir le répertoire des documents dans iOS et Swift 2, utilisez
Le
try!
est sûr dans ce cas car ce répertoire standard est garanti d'exister.Ajoutez ensuite le composant de chemin approprié, par exemple un
sqlite
fichierVérifiez maintenant si le fichier existe avec
checkResourceIsReachableAndReturnError
ofNSURL
.Si vous avez besoin de l'erreur, passez le
NSError
pointeur sur le paramètre.Swift 3+:
checkResourceIsReachable
est marqué comme peut jeterPour ne considérer que la valeur de retour booléenne et ignorer l'erreur, utilisez l'opérateur nil-coalescing
la source
checkResourceIsReachable()
et revient justeBool
pour leURL
type.try - catch
modèle de @KendallHelmstetterGelner Swift ne lève pas d'exceptions. Ce n'est pas comparable aux exceptions d'Objective-C. C'est un système efficace de gestion des erreurs.C'est assez convivial. Il suffit de travailler avec le singleton defaultManager de NSFileManager, puis d'utiliser la
fileExistsAtPath()
méthode, qui prend simplement une chaîne comme argument, et renvoie un Bool, lui permettant d'être placé directement dans l'instruction if.Notez que le downcast en String n'est pas nécessaire dans Swift 2.
la source
Un modèle de code alternatif / recommandé dans Swift 3 serait:
Utilisation de la gestion des exceptions
la source
Swift 4.2
En utilisant: -
la source
Au profit des débutants de Swift 3 :
Voici un exemple de code pour vérifier si un fichier nommé "database.sqlite" existe dans le répertoire des documents d'application:
la source
Très simple: si votre chemin est une instance d'URL, convertissez-le en chaîne par la méthode «chemin».
la source
Cela fonctionne bien pour moi dans swift4:
Vous pouvez vérifier avec cet appel:
J'espère que c'est utile pour quelqu'un. @; -]
la source
Vous devez ajouter une barre oblique "/" avant le nom du fichier, ou vous obtenez un chemin comme "... / DocumentsFilename.jpg"
la source
Exemple de Swift 4 :
J'ai mis le chèque dans ma fonction loadData que j'ai appelée dans viewDidLoad.
Ensuite, j'ai défini loadData ci-dessous.
la source
travaille chez Swift 5
où
"userInfo"
- le nom du fichier, et"sqlite3"
- l'extension du fichierla source