Etwas wirklich komisches ist meinem Quellcode passiert. Die Anwendung wurde immer erfolgreich erstellt, und ich konnte die Anwendung immer starten. In letzter Zeit stürzt die App jedoch ab, wenn ich sie starte und den folgenden Fehler in der Konsole zurückmelde:iPhone App stürzt beim Start aufgrund von Inkonsistenzen ab?
2009-07-23 20:30:06.390 App[15652:20b] Database Successfully Opened :)
2009-07-23 20:30:06.393 App[15652:20b] *** Assertion failure in -[AppDelegate initializeTableData], /Users/me/Desktop/App/Classes/AppDelegate.m:39
2009-07-23 20:30:06.394 App[15652:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error preparing statement'
2009-07-23 20:30:06.394 App[15652:20b] Stack: (
Ich verstehe nicht. Die App würde immer erfolgreich ohne Fehler gestartet werden. Aber jetzt bekomme ich diesen Fehler. Ich hatte meinen Quellcode auf dem Weg gesichert und jetzt, wenn ich diese älteren Versionen erstelle, bekomme ich den gleichen Fehler. Wie ist das überhaupt möglich? Kann Code schlecht werden? Wenn ich zuvor erfolgreich eine Anwendung starten konnte, gehe ich heute zurück und kompiliere es neu und es wird ein Fehler zurückgegeben ... DAS GLEICHE CODE-TEIL?
Der Fehler scheint dieses Stück Code in meiner AppDelegate-Datei zu verweisen:
enter code -(void)initializeTableData {
entries = [[NSMutableArray alloc] init];
sqlite3 *db = [AppDelegate getNewDBConnection];
sqlite3_stmt *statement = nil;
const char *sql = "select * from dict";
if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL) != SQLITE_OK)
NSAssert1(0,@"Error preparing statement", sqlite3_errmsg(db));
else
{
while(sqlite3_step(statement) == SQLITE_ROW) {
// Read the data from the result row
NSString *aGurmukhi = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
NSString *aShahmukhi = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
NSString *aPOS = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];
NSString *aEnglish = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];
// Create a new animal object with the data from the database
Entry *entry = [[Entry alloc] initWithName:aGurmukhi shahmukhi:aShahmukhi pos:aPOS english:aEnglish];
// Add the animal object to the animals Array
[entries addObject:entry];
[entry release];
}
}
//release the resources
sqlite3_finalize(statement);
}
+(sqlite3 *) getNewDBConnection{
sqlite3 *newDBconnection;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"pedict.db"];
// Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK) {
NSLog(@"Database Successfully Opened :)");
} else {
NSLog(@"Error in opening database :(");
}
return newDBconnection;
}
Es scheint ein Problem mit der Datenbankverbindung, aber ich bin immer noch verwirrt darüber, wie das alles möglich ist. Bitte helfen Sie mir ... Ich habe schon sechs Stunden Debugging, mit wenig Erfolg
Danke, es scheint, dass mein XCode-Projekt vom Simulator beschädigt wurde. Ich erstelle einfach ein neues Projekt und kopiere alle Dateien und es scheint zu funktionieren. – Kulpreet