Vous recevez l'avertissement car vous ignorez la const. L'API est définie:
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
Vous assignons le retour à un char *, de sorte que vous êtes tomber const. C'est pourquoi vous obtenez l'avertissement. Vous devriez respecter la const.
const unsigned char *isNil = ...
Je ne suis pas vraiment un grand gars c objectif, mais je pense que stylistiquement, il est pratique courante pour comparer les types primative contre NULL plutôt que nul. De même, il n'est pas nécessaire d'appeler column_text deux fois.
const char *columnText = (const char *)sqlite3_column_text(selectstmt, 2);
if(columnText != NULL)
{
myName = [NSString stringWithUTF8String: columnText ];
}
Vous pouvez voir ci-dessus J'ai transtypé le pointeur const non signé en un pointeur char const. Vous devriez vous assurer que vous savez quand vous jetez un avertissement que c'est la bonne chose à faire. Dans ce cas, il est prudent de lancer un char signé. En général, ne jamais rejeter const, car quiconque a fait cette API pourrait faire quelque chose qui vous oblige à traiter les données comme const.
Merci. Cela donne un nouvel avertissement sur l'affectation de * columnText: Les cibles de pointeur dans l'initialisation diffèrent en signe. – 4thSpace
J'ai ajouté la distribution pour arrêter l'avertissement. –