Преобразование символов все еще не правильно (Objective-C) - PullRequest
0 голосов
/ 05 октября 2009

Прежде всего, спасибо всем, кто ответил на мои первые два вопроса. Я попробовал то, что было предложено, и все еще ничего не работает. Я думал, что создам еще один пост с кодом, который я использую. Просто для справки: я создаю игру в угадайку для моего сына, и мне нужно изменить тип персонажа с десятичного на символ. Я добавил код и логи. Я надеюсь, что это более полезно.

-(IBAction)CHANGE:(id)sender
NSString    *working_text;
NSInteger   working_text_length;
NSInteger   new_key_char_num;
NSInteger   key_char_num;
NSInteger   key_char_position = 0;
NSInteger   char_num = 0;
NSString    *altered_text;

working_text = UITextView_1.text; 
working_text_length = working_text.length;
altered_text = @"";
UITextView_1.text = @"";

int k = 0;
while (k < working_text_length)
{
char_num = [working_text characterAtIndex:k];           
key_char_num        = 65;
new_key_char_num    = char_num  + key_char_num;
    UITextView_1.text = [UITextView_1.text   
    stringByAppendingFormat:@"%c",new_key_char_num];   



    NSLog(@"char_num................%c",char_num);
    NSLog(@"char_num................%d",char_num);
    NSLog(@"key_char_num........... %d",key_char_num);
    NSLog(@"new_key_char_num........%d",new_key_char_num);
    NSLog(@"new_key_char_num........%c",new_key_char_num);
    NSLog(@" ");

    char_num = 0;
    k++;
}


 NSLog(@"UITextView_1.text full text...%@",UITextView_1.text);
 NSLog(@"first  %c",[UITextView_1.text characterAtIndex:0]);
 NSLog(@"second %c",[UITextView_1.text characterAtIndex:1]);
 NSLog(@"third  %c",[UITextView_1.text characterAtIndex:2]);


 // release code is not shown


}

ЖУРНАЛЫ

2009-10-04 22:43:04.949 DaVinci SMS[20757:20b] char_num................A
2009-10-04 22:43:04.951 DaVinci SMS[20757:20b] char_num................65
2009-10-04 22:43:04.951 DaVinci SMS[20757:20b] key_char_num........... 65
2009-10-04 22:43:04.952 DaVinci SMS[20757:20b] new_key_char_num........130
2009-10-04 22:43:04.953 DaVinci SMS[20757:20b] new_key_char_num........Ç
2009-10-04 22:43:04.953 DaVinci SMS[20757:20b]  
2009-10-04 22:43:04.954 DaVinci SMS[20757:20b] char_num................B
2009-10-04 22:43:04.955 DaVinci SMS[20757:20b] char_num................66
2009-10-04 22:43:04.956 DaVinci SMS[20757:20b] key_char_num........... 65
2009-10-04 22:43:04.956 DaVinci SMS[20757:20b] new_key_char_num........131
2009-10-04 22:43:04.957 DaVinci SMS[20757:20b] new_key_char_num........É
2009-10-04 22:43:04.957 DaVinci SMS[20757:20b]  
2009-10-04 22:43:04.958 DaVinci SMS[20757:20b] char_num................C
2009-10-04 22:43:04.959 DaVinci SMS[20757:20b] char_num................67
2009-10-04 22:43:04.959 DaVinci SMS[20757:20b] key_char_num........... 65
2009-10-04 22:43:04.960 DaVinci SMS[20757:20b] new_key_char_num........132
2009-10-04 22:43:04.960 DaVinci SMS[20757:20b] new_key_char_num........Ñ
2009-10-04 22:43:04.961 DaVinci SMS[20757:20b]  
2009-10-04 22:43:04.961 DaVinci SMS[20757:20b] UITextView_1.text...ÇÉÑ
2009-10-04 22:43:04.962 DaVinci SMS[20757:20b] first  «
2009-10-04 22:43:04.962 DaVinci SMS[20757:20b] second …
2009-10-04 22:43:04.963 DaVinci SMS[20757:20b] third  —

Я ввел символы «ABC» в UITextView. Сейчас я использую только три символа. Если вы заметили в нижней части журнала, полная строка UITextView_1.text не равна отдельным символам, которые я вытащил, используя метод characterAtIndex. Это сводит меня с ума.

1 Ответ

1 голос
/ 05 октября 2009

Если вы хотите перейти от char к целому числу и обратно, не нужно ничего добавлять - вы можете просто рассматривать unichar как целое число:

NSString *s = @"ABC";
unichar c = [s characterAtIndex: 0];
NSLog(@"char code: %i, char: %c", c, c); // output: char code: 65, char: A
...