загрузка записи в подробный вид - PullRequest
0 голосов
/ 12 марта 2010

Я застрял с ошибкой при чтении описания. Что-то, должно быть, что-то пошло не так, но я не совсем уверен, как мне это решить. Это мой код, на самом деле я понятия не имею, что на самом деле происходит в этом коде.

- (void) hydrateDetailViewData {
//if detail view is hydrated then do not get it from database
if(isDetailViewHydrated) return;

if(detailStmt == nil) {
    const char *sql = "select snapTitle, snapDesc from Snap where snapID =?";
    if(sqlite3_prepare_v2(database, sql, -1, &detailStmt, NULL) != SQLITE_OK)
        NSAssert1(0, @"Error while creating detail view statement. '%s'", sqlite3_errmsg(database));
    NSLog(@"SQLite= %d", sqlite3_step(detailStmt)); 

}


if(SQLITE_DONE != sqlite3_step(detailStmt)) {


//  NSString *descStr = [[NSString alloc]
                            //initWithString:sqlite3_column_text(detailStmt, 2)];
    NSString *descStr = [NSString stringWithUTF8String:(char *)sqlite3_column_text(detailStmt,2)];
self.snapDescription = descStr;

[descStr release];
}
else
    NSAssert1(0, @"Error getting description of snap2play. '%s'", sqlite3_errmsg(database));

    sqlite3_reset(detailStmt);

    isDetailViewHydrated = YES; //if hydrated, make sure do not get from database again. 
}
}
Error message:
2010-03-12 16:17:14.377 Snap2Play[51282:20b] SQLite= 101
2010-03-12 16:17:14.378 Snap2Play[51282:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithUTF8String:]: NULL cString'

???

1 Ответ

0 голосов
/ 12 марта 2010

Вы получаете 2 столбца в своем запросе sql, но затем пытаетесь получить данные из третьего (так как индексы столбцов начинаются с нуля);

NSString *descStr = [NSString stringWithUTF8String:
       (char *)sqlite3_column_text(detailStmt,2)]; // Should be (detailsStmt, 1)?

Проверьте также, какое значение sqlite3_step фактически возвращает.Я думаю, что будет правильнее сравнивать возвращаемое значение с SQLITE_ROW вместо SQLITE_DONE, так как вам нужно быть уверенным, что вы обрабатываете правильные данные строки:

if(SQLITE_ROW == sqlite3_step(detailStmt)) {
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...