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".