записи sqlite не отображаются для iphone - PullRequest
0 голосов
/ 07 июля 2010

я могу показать только последние элементы из 10 записей

qlite3 *database;


scores = [[NSMutableArray alloc] init];


if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

        const char *sqlStatement = "select name,score from game";
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {



                // Loop through the results and add them to the feeds array
                while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
                //if(sqlite3_step(compiledStatement) == SQLITE_ROW) {
                        // Read the data from the result row


                 Book *  aBook = [[Book alloc] init];

                // NSString *id = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
                aBook.id = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
aBook.name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];


                       SQLiteTutorialAppDelegate *appDelegate = (SQLiteTutorialAppDelegate *)[[UIApplication sharedApplication] delegate];
                appDelegate.books = [[NSMutableArray alloc] init];






                [books addObject:aBook];
       //        aBook.name  shows all 10 names

                } 
        }

        sqlite3_finalize(compiledStatement);

}
sqlite3_close(database);

Теперь, если я вызываю это в табличном представлении, как cell.text=aBook.name, поэтому отображается только последний элемент

1 Ответ

2 голосов
/ 07 июля 2010

На каждой итерации цикла вы создаете новый массив для appDelegate.books, а затем вставляете книгу.Вот почему после цикла appDelegate.books содержит только последний элемент.

Создайте appDelegate и appDelegate.books только один раз перед циклом.

В ответе Большинствоскорее всего, вы устанавливаете текст каждой ячейки в ту же книгу.

Вы сказали, что использовали 'cell.text = aBook.name'.

Как вы получаете «aBook.name».Вам нужно будет использовать indexPath как

Book* aBook = [appDelegate.books objectAtIndex:indexPath.row];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...