Как правильно преобразовать char * в NSString без initWithCString?

Я извлекаю список результатов из базы данных SQLite3 в UITableView . Код, в котором я извлекаю текст из базы данных, выглядит так:

char *menuNameChars = (char *) sqlite3_column_text(statement, 1);
NSString *menuName = [[NSString alloc] initWithUTF8String:menuNameChars];
NSLog(@"Retrieved %s,%@ from DB.", menuNameChars, menuName);

Когда я использую initWithUTF8String , иногда информация правильно копируется из базы данных. Однако иногда информация отображается правильно из char * , но не из NSString :

2011-10-24 22:26:54.325 [23974:207] Retrieved Cravin Chicken Sandwich – Crispy, (null) from DB.
2011-10-24 22:26:54.327 [23974:207] Retrieved Cravin Chicken Sandwich – Roast, (null) from DB.
2011-10-24 22:26:54.331 [23974:207] Retrieved Jr Chicken Sandwich, Jr Chicken Sandwich from DB.
2011-10-24 22:26:54.337 [23974:207] Retrieved Prime-Cut Chicken Tenders - 3 Piece, Prime-Cut Chicken Tenders - 3 Piece from DB.

Теперь, если я заменю initWithUTF8String на initWithCString , код работает отлично. Однако XCode 4.2 сообщает мне, что initWithCString устарел. Я знаю достаточно, чтобы понять, что я не хочу использовать устаревший код, но если initWithUTF8String не работает, что мне следует использовать?

6
задан DrHogie 25 October 2011 в 14:06
поделиться