App falha na tentativa de criação de banco de dados
Eu criei um banco de dados sql usando "SQLite Database Browser", arrastou e soltei no meu projeto Xcode e construiu o aplicativo. Funciona perfeitamente no simulador, mas trava no iPhone, com este erro:
<code>*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to create writable database file with message 'The operation could‚ not be completed. (Cocoa error 260.)'.' </code>
Aqui está meu código:
<code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Creates a writable copy of the bundled default database in the application Documents directory: NSLog(@"AppDelegate...Looking for embedded Database file..."); BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; // Grab the path to the Documents folder: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"users.sql"]; success = [fileManager fileExistsAtPath:writableDBPath]; if (success) { NSLog(@"Database File Exists in Documents folder!"); NSLog(@"Its path is: %@", writableDBPath); return YES; } else { // But if the writable database does not exist, copy the default to the appropriate location. NSLog(@"!!NO Database File Exists in Documents folder!"); NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"users.sql"]; success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; if (!success) { NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); } else NSLog(@"WROTE THE DATABASE FILE!!!"); } return YES; } </code>
Mais uma vez, isso funciona no simulador, mas não no iPhone. (Isso não poderia ter nada a ver com o arquivo tem uma extensão ".sql" em oposição a uma extensão ".sqlite", poderia? Porque são as extensões que o "SQLite Database Browser" fornece aos arquivos que cria. .)