2012-05-29 5 views
18

Я хочу, чтобы показать символ * в ситуации с UITextFieldновообращенный символ * в NSString

:

char *data; 
char *name=data+6; 
txtName.text=[[NSString alloc] initWithCString:name encoding:NSUTF8StringEncoding]; 

, но я не получаю правильное значение.

+1

Что вы получаете в этой области? –

ответ

43

Чтобы создать NSString из const char *, просто использовать эти методы:

Возвращает autorelease d объект:

[NSString stringWithUTF8String:name]; 

Возвращает retain d объект:

[[NSString alloc] initWithUTF8String:name]; 

Reference.

Если вы не получаете правильное значение, то что-то не так с данными. Добавьте несколько NSLog звонков, чтобы посмотреть, что содержат строки.

5

Вы можете использовать [NSString stringWithUTF8String: data].

1

Что вы ожидаете от этого? У вас есть неинициализированный символ *. Затем вы добавляете 6 к указателю, который уже является неопределенным поведением. Затем вы пытаетесь повернуть указатель, указывающий на любой старый мусор (и вы не знаете, где он указывает) на NSString *. Из этого ничего хорошего не может получиться.

Определить символ *, указывающий на реальную, реальную строку C с использованием кодировки ASCII или UTF-8. Затем создайте NSString следующим образом:

char* cstring = "Try harder"; 
NSString* objcstring = @(cstring); 
Смежные вопросы