как удалить ошибку "[NSString stringWithUTF8String:]: NULL cString '"? - PullRequest
9 голосов
/ 11 февраля 2011

Я создаю базу данных sqlite3 test3.sql , поэтому таблица в виде таблицы

CREATE TABLE rest (name VARCHAR(100), price VARCHAR(100));

успешно создана, но теперь, когда я использую метод для вставки и извлечения данных, затем получаю ошибку ,,,

Ошибка в строке

NSString *str = [NSString stringWithUTF8String:
                 (char *)sqlite3_column_text(compiledStatement, 1)];

ошибка +[NSString stringWithUTF8String:]: NULL cString'

Что это за ошибка, как я могу ее удалить?

Ответы [ 3 ]

29 голосов
/ 10 ноября 2011

Вместо того, чтобы просто иметь

... = [NSString stringWithUTF8String:
       (char *)sqlite3_column_text(compiledStatement, 15)]

Вы хотите использовать что-то вроде

... = ((char *)sqlite3_column_text(compiledStatement, 15)) ? 
      [NSString stringWithUTF8String:
       (char *)sqlite3_column_text(compiledStatement, 15)] : nil;
5 голосов
/ 03 сентября 2013

После использования оператора tenary для получения значений из БД вы должны проверить, равно ли это значение нулю. В противном случае программа все равно будет аварийно завершена.

NSString *retrievedString = ((char *)sqlite3_column_text(statement, 15)) ? 
  [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 15)] : 
  nil;

if(retrievedString == nil){
  [allSteps addObject:@""];
} else {
  [allSteps addObject:retrievedString];
}
3 голосов
/ 11 февраля 2011

Это означает, что sqlite3_column_text возвращает NULL.Возвращает NULL, когда столбец равен NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...