Estoy sacando una lista de resultados de una base de datos SQLite3 en un UITableView
. El código donde me tire de texto de la base de datos es de esta manera:Forma correcta de convertir char * a NSString sin initWithCString?
char *menuNameChars = (char *) sqlite3_column_text(statement, 1);
NSString *menuName = [[NSString alloc] initWithUTF8String:menuNameChars];
NSLog(@"Retrieved %s,%@ from DB.", menuNameChars, menuName);
Cuando uso initWithUTF8String
, a veces la información se copia correctamente a partir de la base de datos. A veces, sin embargo, la información se visualiza correctamente desde el char*
, pero no desde el 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.
Ahora, si reemplazo initWithUTF8String
con initWithCString
, el código funciona perfectamente. Sin embargo, XCode 4.2 me dice que initWithCString
ha quedado obsoleto. Sé lo suficiente como para entender que no quiero usar el código en desuso, pero si initWithUTF8String
no funciona, ¿qué debo usar?
¿Ha intentado '[NSString stringWithFormat: @ "% s", menuNameChars]'? –
¿Por qué no usar un contenedor alrededor de sqlite como FMDB https://github.com/ccgus/fmdb? – Dani
@Dani, ¿por qué no utilizar Core Data? Aún más fácil. –