Dans mon application, je laisse l'utilisateur enregistrer un clip sonore et plus tard, si l'utilisateur le souhaite, je souhaite qu'il puisse le supprimer.iPhone/Objectif C: Impossible de supprimer un fichier
Voici le code que j'utilise:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSLog(@"File exists: %d", [fileManager fileExistsAtPath:path]);
NSLog(@"Is deletable file at path: %d", [fileManager isDeletableFileAtPath:path]);
[fileManager removeItemAtPath:path error:&error];
if (error != nil)
{
NSLog(@"Error: %@", error);
NSLog(@"Path to file: %@", path);
}
Le problème est que fileExistsAtPath
et isDeletableFileAtPath
retour nul et le removeItemAtPath
ne fonctionne pas, et jette cette erreur,
Error: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x391b7f0 "Operation could not be completed. (Cocoa error 4.)"
Le chemin a ce formulaire:
/Users/andrei/Library/Application%20Support/iPhone%20Simulator/User/Applications/5472B318-FA57-4F8D-AD91-7E06E9609215/Documents/1280913694.caf
Il existe un fichier appelé 1280913694.caf
, mais il ne le récupère pas. Cela a-t-il quelque chose à voir avec la façon dont le chemin devrait être représenté?
Le chemin fonctionne lors de la lecture du fichier audio avec AVAudioPlayer
.
J'ai aussi changé le %@
à %d
pour fileExistsAtPath
et isDeletableFileAtPath
et la réponse est 0, que je suppose que signifie FAUX.
Le nom du fichier est stocké dans une base de données, et le chemin vers le fichier est récupéré avec cette méthode:
-(NSString *)returnFullPathToDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
Après je reçois cette valeur, je l'utilise dans le code suivant
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
Veuillez remplacer les deux '% @' avant '-removeItemAtPath' par'% d' et réexécutez. – kennytm
notez que le préfixe file: // doit être supprimé, c'est-à-dire convertir en NSURL et obtenir l'attribut .path (comme en effet le chemin est au dessus) – ThomasRS