2010-07-24 9 views
13

utilizo este código para leer los datos de la base de datos SQLite:iPhone stringWithCString está en desuso

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

pero el compilador me da el aviso escrito en el título ... es así, ¿cuál es el derecho y no en desuso método para recuperar un valor de sqlite?

gracias!

Respuesta

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

creo que por lo general va a utilizar NSUTF8StringEncoding, por lo que el código se vería así

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

Alternativamente, puede usar

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

'[[NSString alloc] initWithBytes: longitud de bytes: codificación de recuento: NSUTF8StringEncoding]' es mejor si se piensa detenidamente en el documento de Apple en https://developer.apple.com/reference/foundation/nsstring/1497290-stringwithcstring ? language = objc –

5

Dado que SQLite siempre devuelve cadenas codificadas en UTF-8 *, you could just use +stringWithUTF8String:.

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

(* o UTF-16, si se utiliza sqlite3_column_text16)

1

[[NSString alloc] initWithBytes:bytes length:count encoding:NSUTF8StringEncoding] se prefiere stringWithCString:encoding: recomendación

Apple's Document 's no es muy bien, porque el método original 'no se detiene en un carácter nulo.'

Cuestiones relacionadas