Добавить строку к тексту UILabel? - PullRequest
4 голосов
/ 05 октября 2009

Я начинаю разрабатывать для iPhone. У меня вопрос типа новичка, я уверен:

У меня есть это, которое работает:

testLabel.text = [NSString stringWithFormat:@"%@ to %@", testLabel.text, newLabelText];

Хотелось бы использовать оператор "+ =", но я получаю ошибку компиляции (недопустимые операнды для двоичного +, имеют 'struct NSString *' и 'struct NSString *'):

testLabel.text += [NSString stringWithFormat:@"to %@", newLabelText];

Почему я не могу это сделать?

Кроме того, как я могу сократить свой первый фрагмент кода?

Ответы [ 5 ]

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

Вы не можете использовать оператор +=, потому что C и Objective-C не допускают перегрузки операторов. Вы пытаетесь использовать += с двумя типами указателей, что недопустимо - если левая часть выражения += имеет тип указателя, то правая часть должна быть целочисленного типа, и результатом является арифметика указателя, что в данном случае не то, что вам нужно.

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

Подумайте об использовании NSMutableString - вы можете использовать метод appendString:, например:

NSMutableString *str = [@"hello" mutableCopy];
[str appendString:@" world!"];
2 голосов
/ 05 октября 2009

Этого нельзя сделать, потому что ObjectiveC не поддерживает его, ObjectiveC - маленький слой над C.

testLabel.text = [testLabel.text stringByAppendingFormat:@" to %@", newLabelText];
1 голос
/ 05 октября 2009

NSString НЕ изменяемы (их нельзя изменить), поэтому вы не можете использовать + =.

NSMutableString можно изменить. Вы можете использовать их здесь.

Ваш код уже довольно минимален. Objective-C - это выразительный язык, поэтому просто привыкните к длинным, описательным функциям и именам переменных.

0 голосов
/ 28 июля 2018

попробуйте это:

// usage: label.text += "abc"
public func += (a:inout String?, b:String) {
    a = (a ?? "") + b
}

попробовать этот пользовательский оператор:

let label = UILabel()
label.text = "abc"
label.text += "_def"
print(label.text)    // “abc_def”
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...