Могу поспорить, что строка будет собрана в результате автоматического запуска.Посмотрите в документах UTF8String, они предлагают скопировать строку, чтобы обеспечить ее длительность после этой точки.
Мое реальное предложение, после некоторых размышлений, состоит в том, чтобы избавиться от присвоения переменной ступеньки.
Я бы сказал, используйте это так:
if(sqlite3_prepare_v2(database, [NewData UTF8String], -1, &compiledStatement, NULL)== SQLITE_OK) {
sqlite3_reset(compiledStatement);
Примечание изменение в операторе сброса.Это может быть вашей реальной проблемой, ваш код пытается выполнить строку вместо подготовленного оператора sqlite.