IPhone stringWithCString устарел

Я использую этот код для чтения данных из базы данных sqlite:

keyFromSql = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1)];

но компилятор дает мне предупреждение, написанное в заголовке... Итак, что такое правильный и не устаревший метод для извлечения значения из sqlite?

спасибо!

Ответы

Ответ 1

+(id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

Я думаю, вы, как правило, используете NSUTF8StringEncoding, поэтому ваш код будет выглядеть как

keyFromSq1 = [NSString stringWithCString:(char *)sqlite3_column_text(preparedStatement, 1) encoding:NSUTF8StringEncoding];

В качестве альтернативы вы можете использовать

keyFromSq1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(preparedStatement, 1)];

Ответ 2

Так как SQLite всегда возвращает строки с кодировкой UTF-8 *, вы можете просто использовать +stringWithUTF8String:.

const char* res = (const char*)sqlite3_column_text(preparedStatement, 1);
keyFromSql = [NSString stringWithUTF8String:res];

(* или UTF-16, если вы используете sqlite3_column_text16)

Ответ 3

[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding] предпочтительно stringWithCString:encoding:

Рекомендация Apple Document не очень хорошо, потому что исходный метод "не останавливается на символе NULL".