Sto utilizzando un UIDocument con iCloud. Non sto usando CoreData. Qual è il modo migliore per eliminare un UIDocument?Come eliminare i documenti iCloud?
risposta
Per eliminare il documento da iCloud, prima devi ottenere il nome del file che si desidera eliminare. e quindi è possibile eliminarlo utilizzando NSFileManager.
NSString *saveFileName = @"Report.pdf";
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:@"Documents"] URLByAppendingPathComponent:saveFileName];
NSFileManager *filemgr = [NSFileManager defaultManager];
[filemgr removeItemAtURL:ubiquitousPackage error:nil];
Questo è il modo in cui ho usato per eliminare il documento, Check it out. Mi sta benissimo. Grazie
Credo di avere trovato una soluzione:
[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:url destinationURL:nil error:nil]
Fonte: http://oleb.net/blog/2011/11/ios5-tech-talk-michael-jurewitz-on-icloud-storage/
che non lavoro-iCloud ora ignora questo chiama con un URL di valore nullo. –
documentazione Sede di Apple di "Gestione della Vita-Cyle di un documento" sotto 'Eliminazione di un documento. "
Copiato dalla sezione "Deleting a Document" del Document-Based App Programming Guide for iOS
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
error:nil byAccessor:^(NSURL* writingURL) {
NSFileManager* fileManager = [[NSFileManager alloc] init];
[fileManager removeItemAtURL:writingURL error:nil];
}];
});
NB:." Quando elimini un documento dalla memoria, il tuo codice dovrebbe approssimarsi a quello che UIDocument fa per le operazioni di lettura e scrittura. Dovrebbe eseguire l'eliminazione in modo asincrono su una coda di sfondo, e dovrebbe utilizzare coordinamento file."
Se si utilizza un 'UIDocument' non è necessario implementare il proprio NSFileCoordinator, esso è già inserito in' UIDocument'. L'utilizzo del metodo è un risultato costoso in più istanze di 'NSFileCoordinator'. Vedi: https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileCoordinators/FileCoordinators.html – Joseph
@Joseph Mi chiedo, dalla tua risposta sopra, è per questo che non sono in grado di eliminare un oggetto, che è un oggetto di UIDocument, da iCloud o l'app si blocca quando si tenta di farlo? La mia domanda correlata [qui] (http://stackoverflow.com/questions/43821141/app-hangs-deleting-icloud-document-when-following-guideline-using-nsfilecoordi) – yohannes
SWIFT 3 provengono dalla risposta @AlexChaffee s'
func deleteZipFile(with filePath: String) {
DispatchQueue.global(qos: .default).async {
let fileCoordinator = NSFileCoordinator(filePresenter: nil)
fileCoordinator.coordinate(writingItemAt: URL(fileURLWithPath: filePath), options: NSFileCoordinator.WritingOptions.forDeleting, error: nil) {
writingURL in
do {
try FileManager.default.removeItem(at: writingURL)
} catch {
DLog("error: \(error.localizedDescription)")
}
}
}
}
- 1. Documenti iCloud non visibili
- 2. Come eliminare documenti da Elasticsearch
- 3. Sincronizza tutta la directory Documenti in iCloud
- 4. Come eliminare tutte le raccolte e i documenti in ArangoDb
- 5. Come eliminare tutti i documenti nella raccolta mongodb in java
- 6. iCloud + Archiviazione di media in iPhone Cartella documenti
- 7. Eliminare documenti da Solr usando l'interfaccia utente?
- 8. UIDocumentPickerViewController -> "senza documenti", perché iCloud non disponibile
- 9. Come eliminare N numeri di documenti in mongodb
- 10. Come eliminare documenti per query in modo efficiente in mongo?
- 11. Documenti che non si caricano su iCloud quando si usano i cicli For - iOS
- 12. Come eliminare il contenuto della directory Documenti (e non la stessa cartella Documenti)?
- 13. Come posso impedire agli utenti anonimi di eliminare/modificare i miei documenti in CouchDB?
- 14. iOS - Come eliminare selettivamente i file più vecchi di un mese nella directory di documenti
- 15. iOS: come eliminare tutti i file esistenti con estensione specifica dalla directory dei documenti?
- 16. Come eliminare i vecchi registri con log4j2
- 17. iCloud: Come leggere nelle directory create dall'utente
- 18. Come eliminare i file programmaticamente?
- 19. Come eliminare veramente i vettori
- 20. Streaming da iCloud?
- 21. db.collection.update() tutti i documenti
- 22. Condivisione di un file plist utilizzando iCloud
- 23. Come utilizzare l'estensione del provider di documenti?
- 24. Come formattare i documenti risultato solr?
- 25. Come classificare i documenti indicizzati con lucene
- 26. Come posso scaricare i documenti Rust API?
- 27. Doc2vec: come ottenere i vettori di documenti
- 28. Solr DIH - Come gestire i documenti cancellati?
- 29. Come si indicizzano i documenti in SOLR?
- 30. aperto icloud Drive a iOS
In base ai documenti, devi eliminare roba asincrona su una coda in background. http://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle. html # // apple_ref/doc/uid/TP40011149-CH4-SW4 – Jonny
Dove funziona non sfrutta l'implementazione di 'NSF di UIDocument' ileCoordinator' La risposta di Adrian Sarli è migliore. – Joseph
Per riferimento, si noti che 'removeItemAtURL:' non cancellerà il documento se non è stato ancora scaricato da iCloud sul dispositivo. – Mark