Generating an NSDictionary from an SQL statement.

Posted by Ed Wist on Stack Overflow See other posts from Stack Overflow or by Ed Wist
Published on 2010-04-14T12:37:26Z Indexed on 2010/04/14 13:03 UTC
Read the original article Hit count: 175

I am trying to generate an NSDictonary that can be used to populate a listview with data I retrieved from an SQL statement. when I go to create an array and add them it adds the arrays for ALL my keys and not just for the current key. I've tried a removeAllObjects on the array but for some reason that destroys ALL my data that I already put in the dictionary.

//open the database

 if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
 {
  const char *sql = "select alphaID, word from words order by word";
  sqlite3_stmt *selectStatement;

  //prepare the select statement
  int returnValue = sqlite3_prepare_v2(database, sql, -1, &selectStatement, NULL);
  if(returnValue == SQLITE_OK)
  {
   NSMutableArray *NameArray = [[NSMutableArray alloc] init];
   NSString *alphaTemp = [[NSString alloc] init];
   //loop all the rows returned by the query.
   while(sqlite3_step(selectStatement) == SQLITE_ROW)
   {
     NSString *currentAlpha = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 1)];
     NSString *definitionName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 2)];

   if (alphaTemp == nil){
     alphaTemp = currentAlpha;
    }

    if ([alphaTemp isEqualToString:(NSString *)currentAlpha]) {
    [NameArray addObject:definitionName];

    }
    else if (alphaTemp != (NSString *)currentAlpha) { 
     [self.words setObject:NameArray forKey:currentAlpha];
     [NameArray removeAllObjects];
     [NameArray addObject:definitionName];
    } 
   }
  }

The Statement above adds all the "keys" but then removes all the array elements for all keys. if I take out the removeAllKeys it adds ALL the array elements for ALL keys. I don't want this I want it to add the array elements FOR the specific key then move on to the next key.

in the end I want a NSDictonary with

A (array)
Alpha (string)
Apple (string)
B (array)
Beta (string)
Ball (string)
C (array)
Code (string)
...

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about iphone-sdk