2011-01-29 3 views
0

я использую следующее заявление для в конверсии NSString (с поиска/замены)ИНТ к NSString вопросу

curr_rep_date = [tmpRptDt stringByReplacingOccurrencesOfString:tmpYrVal withString:[NSString stringWithFormat:(tmpCurrYearInt-1)]]; 

Я объявил

int tmpYrVal; 
NSMutableString *tmp_dt,*curr_rep_date; 

Но программа, как представляется, сбой и отладчик не дает никаких намеков.

Может ли кто-нибудь помочь мне в решении проблемы и что было бы правильным использованием.

ответ

1

Там в ряд проблем здесь.

Во-первых, sringByReplacingOcurrancesOfString:withString: ожидает NSString s в качестве параметров, а не int s. Вот почему он терпит крах. Метод пытается отправить сообщение примитивному типу, а не объекту.

Во-вторых, вам необходимо использовать правильную строку формата для метода stringWithFormat:. Это то же самое, что работает NSLog.

Строка формата может выглядеть как @"some text %d". Затем будет следовать разделенный запятыми список значений, которые будут использоваться вместо% заполнителей.

Пример:

[NSString stringWithFormat:@"%d", myIntValue]; 

будет эффективно превратить Int в строку, так как он создает новую строку с форматом, используя ИНТ.

1

Вы вызывали stringWithFormat - метод без строки формата. [NSString stringWithFormat: @ "% i", (tmpCurrYearInt-1)] должен решить вашу проблему.

0

Вы пропускаете формат


curr_rep_date = [tmpRptDt stringByReplacingOccurrencesOfString:tmpYrVal withString:[NSString stringWithFormat:@"%d", (tmpCurrYearInt-1)]]; 

+0

Я заменил вышеуказанную строку. Тем не менее программа рушится. – testndtv

+0

Посмотрите на мой ответ. Вы не можете передать int в качестве первого аргумента в sringByReplacingOcurrancesOfString: withString: он принимает строку не int. – Jasarien

+0

Привет, Jasarien..Не могли бы вы предоставить мне полное правильное использование заявления. – testndtv

0

Basic INT в NSString преобразования работает так:

NSString* s = [NSString stringWithFormat:@"%d", intNumber]; 
Смежные вопросы