transferir pasar para mensajes gratis contactos app iphone objective-c core-data copy nsfilemanager

para - pasar whatsapp de iphone a android 2018 gratis



¿Qué pasa con mi copia aquí? (4)

El error 262 se define en FoundationErrors.h como NSFileReadUnsupportedSchemeError.

Le sugiero que use NSLog () para escribir los valores literales de las dos URL que está utilizando y asegúrese de que sean file: // URL y que parezcan completas.

Intento copiar un archivo de mi paquete de aplicaciones en el directorio de documentos de mi aplicación. Me aparece un error, "Cocoa Error 262". ¿Qué estoy haciendo mal? Aquí está mi código:

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreData.sqlite"]; NSURL *initialURL = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"CoreData" ofType:@"sqlite"]]; NSError *error = nil; if (![[NSFileManager defaultManager] fileExistsAtPath:[initialURL absoluteString]]) { NSLog(@"Original does not exist. /nPath: %@", [initialURL absoluteString]); } if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL absoluteString]]) { NSLog(@"Destination file does not exist. /nPath: %@", [storeURL absoluteString]); [[NSFileManager defaultManager] copyItemAtURL:initialURL toURL:storeURL error:&error]; NSLog(@"Error: %@", [error description]); }


El error que estás recibiendo es

NSFileReadUnsupportedSchemeError Read error because the specified URL scheme is unsupported

lo cual creo que significaría que uno de tus caminos no se está formando correctamente. quizás escriba estas rutas en el registro y vea si están saliendo como espera que lo hagan.


El problema es que estás inicializando una URL con una ruta de archivo antigua simple.

NSURL *initialURL = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"CoreData" ofType:@"sqlite"]];

Utilice [NSURL fileURLWithPath:] lugar.


He resuelto el problema, aunque para ser sincero, no estoy seguro de qué fue. Tengo que repasar el código de trabajo nuevamente, pero aquí está:

NSError *error = nil; NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", @"CoreData", @"sqlite"]]; //if file does not exist in document directory, gets original from mainbundle and copies it to documents. if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { NSString *defaultFilePath = [[NSBundle mainBundle] pathForResource:@"CoreData" ofType:@"sqlite"]; [[NSFileManager defaultManager] copyItemAtPath:defaultFilePath toPath:filePath error:&error]; if (error != nil) { NSLog(@"Error: %@", error); } }

Editar:

Sospecho que la ruta al directorio de la aplicación era incorrecta, dado que el cuerpo de la applicationDocumentsDirectory parece diferente del método utilizado para el valor de la variable documentsDorectory que se muestra arriba.