Недостающие линии в действии - PullRequest
0 голосов
/ 13 февраля 2011

verbВ учебнике у меня есть три поля, которые предоставляют текст свойств thePlace, theVerb и theNumber

Действие кнопки должно заменить слова и в шаблоне (с соответствующими свойствами).

Это действие:

-(IBAction) createStory:(id)sender{

theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<number>"
                withString:theNumber.text];
theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<place>"
                withString:thePlace.text];
theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<verb>"
                withString:theVerb.text];
}

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

Если я изменяю действие на:

-(IBAction) createStory:(id)sender{

theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<verb>"
                withString:theVerb.text];
    theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<number>"
                withString:theNumber.text];
theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<place>"
                withString:thePlace.text];

}

Заменяется только слово место (с содержимым thePlace)

Почему выполняется только последняя замена и перваядва игнорируются? Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2011
theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<number>"
                withString:theNumber.text];
theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<place>"
                withString:thePlace.text];

Оба раза ваш код изменяет строку в шаблоне.

Ваш код не использует ранее измененный текст. Он использует текст из шаблона.

Может быть, вы должны попробовать что-то вроде этого:

theStory.text =[theTemplate.text
                stringByReplacingOccurrencesOfString:@"<number>"
                withString:theNumber.text];
theStory.text =[theStory.text
                stringByReplacingOccurrencesOfString:@"<place>"
                withString:thePlace.text];

В этом случае вторая строка изменяет текст, который вы вернули с первой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...