Nella mia applicazione, faccio in modo che l'utente registri una clip audio e in seguito, se l'utente lo sceglie, voglio che sia in grado di eliminarlo.iPhone/Objective C: Impossibile eliminare un file
Questo è il codice che uso:
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);
}
Il problema è che fileExistsAtPath
e isDeletableFileAtPath
ritorno nullo e il removeItemAtPath
non funziona, e getta questo errore,
Error: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x391b7f0 "Operation could not be completed. (Cocoa error 4.)"
Il percorso ha questo modulo:
/Users/andrei/Library/Application%20Support/iPhone%20Simulator/User/Applications/5472B318-FA57-4F8D-AD91-7E06E9609215/Documents/1280913694.caf
C'è un file chiamato 1280913694.caf
, ma non lo raccoglie. Ha qualcosa a che fare con il modo in cui il percorso dovrebbe essere rappresentato?
Il percorso funziona durante la riproduzione del file audio con AVAudioPlayer
.
Ho anche cambiato il %@
per %d
per fileExistsAtPath
e isDeletableFileAtPath
e la risposta è 0, che suppongo significa FALSE.
Il nome del file viene memorizzato in un database, e il percorso del file viene recuperato con questo metodo:
-(NSString *)returnFullPathToDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
Dopo ottengo questo valore, lo uso nel codice seguente
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
Per favore cambia i due '% @' prima di '-removeItemAtPath' a'% d' ed esegui di nuovo. – kennytm
nota che il prefisso file: // deve essere rimosso, ovvero convertirlo in NSURL e ottenere l'attributo .path (come in effetti il percorso è sopra) – ThomasRS