I want to create a NSMutableDictionnary
with a NSString
.
-(NSMutableDictionary *)getList{
//Declaration d'un objet SQLITE
sqlite3 *database;
//Declaration de notre String qui sera retourne
NSMutableDictionary *aromaArray = [[NSMutableDictionary alloc] init];
// Ouverture de la base de donnees
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
//Chaine de caracteres de la requete
const char *sqlStatement = "SELECT name_fr FROM aroma_huiles";
//Creation de l'objet statement
sqlite3_stmt *compiledStatement;
//Compilation de la requete et verification du succes
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
// Creation d'un dictionnaire des noms de colonnes
NSDictionary *dictionary = [self indexByColumnName:compiledStatement];
//char **final = malloc(4096 * sizeof(*final));
NSMutableArray *array = [[NSMutableArray alloc] init];
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
//Assigne la valeur dans la chaine de caracteres
char *tab;
tab = (char*)sqlite3_column_text(compiledStatement, [[dictionary objectForKey:@"name_fr"] intValue]);
NSString *final = [NSString stringWithUTF8String:tab];
if (final != nil) {
NSString *firstLetter = [final substringToIndex:1];
[aromaArray setObject:final forKey:firstLetter];
}
}
}
else {
//Envois une exception en cas de probleme de requete
NSAssert1(0, @"Erreur :. '%s'", sqlite3_errmsg(database));
}
// Finalisation de la requete pour liberer la memoire
sqlite3_finalize(compiledStatement);
}
else {
//Envois une exception en cas de probleme d'ouverture
NSAssert(0, @"Erreur d'ouverture de la base de donnees");
}
//Fermer la base de donnees
sqlite3_close(database);
//Retourne la valeur
return aromaArray;
}
I think this is the easiest method, only 2 lines, but It still reject it :
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString count]: unrecognized selector sent to instance 0x1093180c0'