将字符串附加到UILabel文本?

时间:2009-10-05 02:11:06

标签: iphone string

我开始为iPhone开发。我有一个初学者类型的问题,我敢肯定:

我有这个,有效:

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

我希望我可以使用“+ =”运算符,但是我得到一个编译错误(无效的操作数到二进制+,有'struct NSString *'和'struct NSString *'):

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

为什么我不能这样做?

另外,如何缩短我的第一段代码呢?

5 个答案:

答案 0 :(得分:5)

考虑使用NSMutableString - 您可以使用appendString:方法,如:

NSMutableString *str = [@"hello" mutableCopy];
[str appendString:@" world!"];

答案 1 :(得分:5)

您不能使用+=运算符,因为C和Objective-C不允许运算符重载。你试图使用+=两种指针类型,这是不允许的 - 如果+=表达式的左侧有一个指针类型,那么右侧必须是一个整数类型,结果是指针算术,在这种情况下不是你想要的。

答案 2 :(得分:2)

由于ObjectiveC不支持,因此无法完成,ObjectiveC是C上的一个小层。

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

答案 3 :(得分:1)

NSString不可变(它们无法更改),这就是你不能使用+ =的原因。

可以更改NSMutableString。你或许可以在这里使用它们。

您的代码已经很少了。 Objective-C是一种富有表现力的语言,因此只需习惯长,描述性的函数和变量名称。

答案 4 :(得分:0)

尝试一下:

// 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”