Преобразование nsstring и const char *

Я пытаюсь преобразовать nsstring в const char *.

1- я добавляю nsstring и целое число вместе
2- то я конвертирую эту новую nsstring в const char *
3- у меня есть объект, и я отношу эту новую nsstring как имя моего объекта.
4- я использую этот объект в другой функции

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

проблема: A
1- secondName имеет значение null, когда я использую свой объект в своей функции.
2-, но если я заменил firstName на: firstName = "Name1"; 3- он работает

проблема B
1- если я заменил const char * secondName = [firstName cString];
by const char * secondName = [macString UTF8String];
2- даже если у меня есть firstName = "Name1"; 3- это не работает!

любая идея?

Благодарю вас

: =)

Ответы

Ответ 1

Использовать cStringUsingEncoding из класса NSString:

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

Ответ 2

const char * являются постоянными, их нельзя назначить в любом случае!

Попробуйте передать (const char*)[firstName UTF8String] в свой метод

Ответ 3

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

const char* secondName = [firstName UTF8String];

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

Ответ 4

Используйте этот метод:

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]);