2010-07-23 8 views
14

Non sono riuscito a ottenere alcuna risposta alla mia precedente domanda (correlata), quindi mi chiedo se un parafrasando leggermente sarà di qualche aiuto.NSKeyedUnarchiver - cancella i dati decodificati?

Sto codificando alcuni oggetti complessi con NSKeyedArchiver e salvandolo sul disco. Di ', qualcosa di simile -

Class member { 
    int *id; 
    NSString *name; 
    NSMutableArray *array; 
    TempClass *object; 
} 

La funzionalità che sto cercando di costruire è per l'utente sia in grado di salvare il suo lavoro, diciamo, durante la creazione di un nuovo membro e tornare in un secondo momento. Quando l'utente termina, fa clic sul post e i dati verranno trasmessi a un servizio web. In caso contrario, fa semplicemente clic su Salva e lascia lo schermo e i dati vengono mantenuti, in modo che l'app possa riprendere da quel punto quando l'utente torna indietro. Ora, una volta che ho pubblicato i dati sul servizio web, non voglio più conservare i dati nel disco e non riesco a trovare un modo per eliminarli.

Ora, le mie classi di codifica e decodifica funzionano correttamente. Posso usare NSKeyedArchiver per salvare i dati su disco e recuperarli usando NSKeyedUnarchiver. Ma la mia domanda è: come posso cancellare i dati che non mi servono più? Devo cancellare manualmente il file sul disco? C'è un modo per ottenere NSKeyedUnarchiver per eliminare i dati che sta restituendo?

Grazie,
Teja.

risposta

18

Un modo molto semplice per sufficiente eliminarlo a livello di codice una volta che avete pubblicato i dati:

- (BOOL) deleteFile:(NSString *) pathOfFileToDelete error:(NSError *)err { 
    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: pathOfFileToDelete]; 
    if(exists) { 
     [[NSFileManager defaultManager]removeItemAtPath: pathOfFileToDelete error:err]; 
    } 
    return exists; 
} 
+1

Grazie. Ma come posso ottenere il nome del file? Se archivi più oggetti, verranno salvati come file multipli? –

+0

Ok, ho capito che era una domanda stupida. Non sto riscrivendo il mio codice di salvataggio per scrivere su un file diverso per ogni archivio che creo. Posso quindi eliminarli ogni volta che voglio. –

2

per SWIFT 2.0:

do { 
    try NSFileManager.defaultManager().removeItemAtPath("Your_PATH") 
} catch { 

} 
5

per SWIFT 2.0:

func deleteFile(path: String) -> Bool{ 
    let exists = NSFileManager.defaultManager().fileExistsAtPath(path) 
    if exists { 
     do { 
      try NSFileManager.defaultManager().removeItemAtPath(path) 
     }catch let error as NSError { 
      print("error: \(error.localizedDescription)") 
      return false 
     } 
    } 
    return exists 
} 
2

Un esempio Swift3:

do { 
try FileManager.default.removeItem(atPath: path) 
} catch { 
// catch potential error 
}