Dois-je vérifier si un fichier existe à un chemin donné lorsque j'essaie de lire les données dans un objet NSData
? En ce moment je ne fais pas pour le moment mais mon code fonctionne puisque mon tableau qui est censé être peuplé avec les données du fichier sera mis à zéro et je peux plus tard dans mon application vérifier si ce tableau est nul. Mais je pense que le code est peut-être «moche» et fonctionnerait mieux si je faisais un contrôle (comme celui du code commenté).Objective-C NSData initWithContentsOfFile, vérifie si le fichier existe?
NSData *codedData = [[NSData alloc] initWithContentsOfFile:[CareersParser dataFilePath]];
/*
if (codedData != nil) {
//do the below (not commented out code)
} else {
//file doesn't exist at the given path
[codedData release];
return nil;
}
*/
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:codedData];
NSArray *careers = [unarchiver decodeObjectForKey:kDataKey];
[unarchiver finishDecoding];
NSMutableArray *ids = [[NSMutableArray alloc] init];
for (Career *career in careers) {
[ids addObject:[career id]];
}
// Sort the array in an orderly fashion
NSArray *sortedIds = [ids sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
// Release allocated memory
[ids release];
[unarchiver release];
[codedData release];
return sortedIds;
Comment une situation de course se produirait-elle en utilisant la méthode 'fileExistsAtPath'? –
Le premier exemple que je peux penser est si vous utilisez 'fileExistsAtPath' pour vérifier que votre structure de répertoire requise est configurée par exemple. 'Documents/myAppFiles/test.txt' lors de la réception de' YES' vous pourriez être heureux et aller de l'avant et enregistrer le fichier. Il est possible que, entre votre vérification et l'opération de sauvegarde, un thread d'arrière-plan arrive et supprime la structure de répertoire sur laquelle vous dépendez, ce qui empêcherait votre fichier de sauvegarder. Il y a plus d'informations dans les docs apple http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html –