2009-11-17 5 views
0

Je programme une application iPhone Xcode et utilise sqlite. Dans le but de supprimer toutes les lignes d'une table, je reçois l'avertissement ci-dessus lorsque je construis mon code. Est-ce que quelqu'un a des suggestions sur la façon de résoudre ce problème? Merciavertissement: type de récepteur non valide + sqlite3

- (void) deleteData { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *writableDBPath = [documentsDirectory 
           stringByAppendingPathComponent:@"myDatabase.sqlite"]; 
    if (sqlite3_open([writableDBPath UTF8String], &database) == SQLITE_OK) { 

    [database executeNonQuery:@"DELETE FROM test;"]; 
    } 

    [database release]; 

} 
+0

Quelle est la déclaration de la base de données? – cdespinosa

+0

sqlite3 * base de données; –

Répondre

1

En supposant

sqlite3 *database; 

quelque part tout ins, il convient de noter que sqlite3_open() ne crée pas un objet Objective-C; il crée un handle de base de données sqlite3, qui est, si la mémoire est présente, une structure groupée dans un pointeur. Il peut, en d'autres termes, pas recevoir des messages Objective-C. * ne fait pas un objet.

+0

Ok, avez-vous une idée sur la façon dont ce code devrait être modifié afin que je puisse communiquer avec l'objet pour supprimer les enregistrements de la table? –

+0

Vous devrez utiliser l'API C pour SQLite et générer les instructions SQL appropriées. Pour des tutoriels sur la façon de faire cela, voir http://www.mobileorchard.com/iphone-sqlite-tutorials-and-libraries/. Si vous voulez vraiment gérer cela de manière orientée objet, je recommande fortement d'utiliser Core Data au lieu de SQLite nu. –