Estoy usando un UIDocument con iCloud. No estoy usando CoreData. ¿Cuál es la mejor manera de eliminar un UIDocument?¿Cómo eliminar documentos de iCloud?
Respuesta
Para borrar el documento de iCloud, primero hay que obtener el nombre del archivo que desea borrar. y luego puede eliminarlo usando 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];
Esta es la forma en que solía borrar el documento, Compruébalo. Me está yendo genial. Gracias
creo que he encontrado una solución:
[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:url destinationURL:nil error:nil]
Fuente: http://oleb.net/blog/2011/11/ios5-tech-talk-michael-jurewitz-on-icloud-storage/
@AlexChaffee 's que no lo hace de obra iCloud ahora ignora este llamada con un valor cero destinationURL. –
documentación Ver Manzana de la "Gestión de la Vida Cyle de un documento" en 'Eliminación de un documento. "
Copiado de la sección "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:". Cuando elimina un documento del almacenamiento, su código debe aproximarse a lo que hace UIDocument para las operaciones de lectura y escritura. Se debe realizar la eliminación de forma asíncrona en una cola en segundo plano, y se debe utilizar la coordinación de archivos."
Si está utilizando un 'UIDocument' no es necesario implementar su propio NSFileCoordinator, ya está horneado en' UIDocument'. Usar su método es costoso en múltiples instancias 'NSFileCoordinator'. Ver: https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileCoordinators/FileCoordinators.html – Joseph
@Joseph Me pregunto, por su respuesta anterior, es por eso que no puedo eliminar un elemento, que es un objeto de UIDocument, de iCloud o la aplicación se bloquea al intentar hacerlo? Mi pregunta relacionada [aquí] (http://stackoverflow.com/questions/43821141/app-hangs-deleting-icloud-document-when-following-guideline-using-nsfilecoordi) – yohannes
SWIFT 3 provienen de respuesta
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. iCloud: ¿cómo gestionar la desactivación de iCloud?
- 2. iCloud + Almacenamiento de medios en la carpeta Documentos de iPhone
- 3. ¿Cómo puedo eliminar varios documentos en CouchDB?
- 4. Eliminar varios documentos en CouchDB
- 5. ¿Cómo eliminar los contenidos del directorio de Documentos (y no del directorio de Documentos en sí)?
- 6. Transmitir desde iCloud?
- 7. Cómo eliminar documentos por consulta de manera eficiente en mongo?
- 8. iCloud: cambiar el nombre de los documentos abiertos en otro dispositivo a veces falla
- 9. CouchDb: ¿cómo eliminar documentos anteriores> 6 meses?
- 10. icloud sincronización ubicuidad de error
- 11. Compartiendo un archivo plist utilizando iCloud
- 12. Apple iCloud calendario API
- 13. iCloud sync keychain
- 14. Cómo verificar si iCloud está configurado programáticamente
- 15. core data iCloud fusionar protocolo
- 16. iCloud: Cómo leer en directorios creados por el usuario
- 17. ¿De qué sirve el conjunto de pantallas iCloud?
- 18. API de flujo de fotos de ICloud?
- 19. ¿Cómo puedo ordenar un resultado de NSMetadataQuery icloud de UIDocument por fecha de modificación?
- 20. ¿Cómo escribir documentos importantes?
- 21. ¿Cómo habilitar el soporte de iCloud para sqlite?
- 22. loadFromContents de iCloud - cómo lidiar con UIDocumentStateSavingError y UIDocumentStateEditingDisabled
- 23. iCloud: Devolución de llamada para NSFileManager's startDownloadingUbiquitousItemAtURL?
- 24. Compartir datos de iCloud entre dos aplicaciones
- 25. Raven DB: ¿Cómo puedo eliminar todos los documentos de un tipo determinado
- 26. Fusión de documentos xml
- 27. Compartir datos básicos e imágenes a iCloud
- 28. ¿Cómo forzar a iCloud con los datos centrales para sincronizar?
- 29. ¿Cómo se detecta cuando se cambia un archivo en iCloud?
- 30. ¿Cómo puedo saber cuánto espacio iCloud usa mi aplicación?
De acuerdo con los documentos, tiene que eliminar cosas asincrónicas en una cola de fondo. http://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle. html # // apple_ref/doc/uid/TP40011149-CH4-SW4 – Jonny
Donde esto funciona, no aprovecha la implementación de 'NSF de 'UIDocument' ileCoordinator' La respuesta de Adrian Sarli es mejor. – Joseph
Como referencia, tenga en cuenta que 'removeItemAtURL:' no eliminará el documento si aún no se ha descargado de iCloud al dispositivo. – Mark