@jerad.kuphal
В Objective-C символьные строки представляются типом данных NSString, а отдельные символы - типом данных unichar. Если у вас есть символ типа char, вы можете преобразовать его в unichar следующим образом:
1 2 |
char myChar = 'a'; unichar myUnichar = (unichar)myChar; |
Здесь мы используем приведение типов для преобразования переменной типа char в тип unichar.
Если у вас есть строка символов типа char, и вы хотите преобразовать ее в строку типа NSString, вы можете воспользоваться методом initWithCString:encoding: класса NSString, который принимает указатель на строку символов и кодировку символов:
1 2 |
char myString[] = "hello"; NSString *myNSString = [[NSString alloc] initWithCString:myString encoding:NSUTF8StringEncoding]; |
Здесь мы создаем новый объект типа NSString, используя строку символов "hello" и кодировку UTF-8. Обратите внимание, что этот метод требует, чтобы строка символов имела завершающий нулевой символ. Если ваша строка этого не имеет, вы должны явно добавить его, например, так:
1 2 3 4 5 6 7 |
char myString[] = "hello"; int length = strlen(myString); char *myStringWithNull = malloc(length + 1); strcpy(myStringWithNull, myString); myStringWithNull[length] = ''; NSString *myNSString = [[NSString alloc] initWithCString:myStringWithNull encoding:NSUTF8StringEncoding]; free(myStringWithNull); |
Здесь мы сначала вычисляем длину строки символов, затем выделяем достаточно памяти для строки с нулевым символом, копируем содержимое строки в эту новую строку и явно добавляем нулевой символ. После этого мы можем использовать эту новую строку в методе initWithCString:encoding:. Не забудьте освободить память, когда она больше не нужна!