Ответ 1
Вы получаете предупреждение, поскольку игнорируете const. API определен:
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
Вы назначаете возврат к char *, поэтому вы отбрасываете константу. Вот почему вы получаете предупреждение. Вы должны уважать const.
const unsigned char *isNil = ...
Я не очень большой парень objective-c, но я считаю стилистически обычной практикой сравнивать примитивные типы с NULL, а не с nil. Также нет необходимости дважды вызывать столбец.
const char *columnText = (const char *)sqlite3_column_text(selectstmt, 2);
if(columnText != NULL)
{
myName = [NSString stringWithUTF8String: columnText ];
}
Вы можете видеть выше. Я применил указатель const unsigned char к указателю со знаком char. Вы должны убедиться, что знаете, когда отвергаете предупреждение о том, что это правильно. В этом случае безопасно передавать в подписанный char. В общем, никогда не отбрасывайте const, поскольку тот, кто сделал этот API, мог делать что-то, что требует от вас обработки данных как const.