iPhone stringWithCString устарела - PullRequest
13 голосов
/ 24 июля 2010

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

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

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

спасибо!

Ответы [ 3 ]

26 голосов
/ 24 июля 2010
+(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)];
5 голосов
/ 24 июля 2010

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

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

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

1 голос
/ 25 августа 2016

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

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

...