#iphone #objective-c #cocoa-touch #nsmutablearray #nsarray
#iPhone #objective-c #cocoa-touch #nsmutablearray #nsarray
Вопрос:
Я запутался в строках (боюсь, проблема новичка):
У меня есть один NSMutableArray под названием Notebook. В позиции индекса 1 у меня есть объект, который, как я думаю, является строкой. По крайней мере, я поместил это в массив следующим образом:
[NoteBook replaceObjectAtIndex:1 withObject:@"x-x-x-x"];
Пока все хорошо. Если я помещу это в UILabel, на моем экране будет отображаться x-x-x-x. Кошмар начинается, когда я пытаюсь сравнить эту строку с другими строками. Давайте рассмотрим, что я не хочу отображать строку x-x-x-x на своем экране, а просто хочу, чтобы вместо нее был пробел. Итак, я подумал, что смогу достичь этого, закодировав это:
NSString *tempDateString;
tempDateString = [NSString stringWithFormat:@"%@",[NoteBook objectAtIndex:1]];
if (tempDateString == @"x-x-x-x") {
UISampleLabel.text = @"";
}
По какой-то причине это не работает, т. Е. даже если строка в позиции 1 моего массива равна ‘x-x-x-x’, она все равно не установит для моего UISampleLabel значение nothing.
Я полагаю, что я путаюсь с маркерами @»». Когда они мне действительно нужны? Почему я не могу просто кодировать tempDateString = [NoteBook objectAtIndex:1];
без форматирования?
Любая помощь и предложения были бы очень признательны!
Ответ №1:
Вам нужно сравнить строку с isEqualToString:
if ([tempDateString isEqualToString:@"x-x-x-x"]) {
UISampleLabel.text = @"";
}
Ответ №2:
В дополнение к вопросу, на который был дан ответ:
Почему я не могу просто кодировать
tempDateString = [NoteBook objectAtIndex:1];
без форматирования?
Вы можете. Как вы думаете, почему вы не можете?
Комментарии:
1. Вы можете. Но имейте в виду, что экземпляр, который вы получаете из objectAtIndex:1, является объектом автоматического выпуска. Вы должны сохранить его, если хотите использовать вне метода. 😉
2. Спасибо, но то же самое верно и для экземпляра, возвращенного из
stringWithFormat:
. Кроме того, я спрашиваю не ради собственной выгоды — я спрашиваю n.evermind, почему он считаетstringWithFormat:
, что это требуется в приведенном выше. Его ответ может выявить неправильное представление, которое мы можем помочь устранить.3. Спасибо за ваши комментарии. На самом деле, я все еще в замешательстве из-за @»» . Я думал, мне это нужно, чтобы указать, что мы имеем дело со строкой, не так ли? Есть ли разница, объявляю ли я что-то с помощью stringWithFormat или нет?
4. Нет, в конечном результате нет разницы — в любом случае, это строковый объект. @»» — это просто удобный ярлык, который позволяет объявлять буквальные строковые значения прямо в вашем коде.
stringWithFormat:
полезно, когда вы хотите отформатировать кучу материала в строку, как вsomeString = [NSString stringWithFormat:@"This:%d That:%d The other:%@", this, that, theOther]
. Обратите внимание, что строка формата, которую вы создаете с помощью @»», является таким же экземпляром NSString, как и любой другой.