App stürzt beim Versuch der Datenbankerstellung ab
Ich habe eine SQL-Datenbank mit "SQLite Database Browser" erstellt, per Drag & Drop in mein Xcode-Projekt gezogen und die App erstellt. Es funktioniert perfekt auf dem Simulator, stürzt aber auf dem iPhone ab, mit diesem Fehler:
<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>
Hier ist mein Code:
<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>
Auch dies funktioniert auf dem Simulator, aber nicht auf dem iPhone. (Dies könnte nichts damit zu tun haben, dass die Datei eine ".sql" -Erweiterung im Gegensatz zu einer ".sqlite" -Erweiterung hat.) .)