Désolé, stupide question numéro 2 aujourd'hui. Est-il possible de déterminer si un fichier est contenu dans le bundle d'applications? Je peux accéder aux fichiers sans problème, c'est-à-dire,
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
Mais je ne peux pas comprendre comment vérifier si le fichier existe en premier lieu.
Cordialement
Dave
[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
Ce code a fonctionné pour moi ...
NSString *pathAndFileName = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
if ([[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName])
{
NSLog(@"File exists in BUNDLE");
}
else
{
NSLog(@"File not found");
}
J'espère que cela aidera quelqu'un ...
pathForResource retournera nil si la ressource n'existe pas. Une nouvelle vérification avec NSFileManager est redondante.
Obj-C:
if (![[NSBundle mainBundle] pathForResource:@"FileName" ofType:@"plist"]) {
NSLog(@"The path could not be created.");
return;
}
Swift 4:
guard Bundle.main.path(forResource: "FileName", ofType: "plist") != nil else {
print("The path could not be created.")
return
}
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename"];
if(![fileManager fileExistsAtPath:path])
{
// do something
}
Identique à @Arkady, mais avec Swift 2.0:
Tout d'abord, appelez une méthode sur mainBundle()
pour aider à créer un chemin d'accès à la ressource:
guard let path = NSBundle.mainBundle().pathForResource("MyFile", ofType: "txt") else {
NSLog("The path could not be created.")
return
}
Ensuite, appelez une méthode sur defaultManager()
pour vérifier si le fichier existe:
if NSFileManager.defaultManager().fileExistsAtPath(path) {
NSLog("The file exists!")
} else {
NSLog("Better luck next time...")
}