2010-12-06 9 views
14

intento convertir nsstring a const char *.nsstring y const char * conversión

1- agrego un NSString y un entero juntos
2- entonces convertir este nuevo NSString a const char *
3- tengo un objeto y lo atribuyo esta nueva NSString como el nombre de mi objeto.
4- i utilizar este objeto en otra función

NSString * Nombre = [NSString stringWithFormat: @ "Nombre% d", 1];
const char * secondName = [firstName cString];
myobject-> setName (secondName);

problema: Un secondName
1- es nulo cuando uso mi objetivo en mi función.
2- pero si reemplazo FirstName por: firstName = "Name1";
3- funciona

problema B
1- si reemplazo const char * secondName = [primerNombre cCadena];
por const char * secondName = [macString UTF8String];
2- incluso si tengo firstName = "Name1";
3- esto no funciona!

any idea ??

gracias

: =)

Respuesta

15

const char * son constantes, no se puede asignar en de todos modos!

Intenta pasar (const char*)[firstName UTF8String] a su método de

58

Uso cStringUsingEncoding de la clase NSString:

NSString *myString = @"Hello"; 
const char *cString = [myString cStringUsingEncoding:NSASCIIStringEncoding]; 
+4

Prestar atención a la parte siguiente en la documentación si usa NSASCIIStringEncoding o similar: _Returna NULL si el receptor no puede b e sin pérdida convertido a encoding_ – V1ru8

+0

all (null) (nulo) – Gank

3
NSString* firstName = [NSString stringWithFormat: @"Name%d", 1]; 

const char* secondName = [firstName UTF8String]; 

UTF8String returns a const char: - (const char *)UTF8String 
0

El uso de este método:

char* MakeStringCopy (const char* string) 
{ 
    if (string == NULL) 
     return NULL; 

    char* res = (char*)malloc(strlen(string) + 1); 
    strcpy(res, string); 
    return res; 
} 

NSString *filePath = @"~/Documents/Image.png"; 
MakeStringCopy([filePath UTF8String]); 
+3

... y tiene una pérdida de memoria. – gwiazdorrr