stringByAppendingFormat不起作用

时间:2010-05-11 14:36:05

标签: objective-c nsstring string-concatenation

我有一个NSString并且无法应用以下语句:

NSString *myString = @"some text";
[myString stringByAppendingFormat:@"some text = %d", 3];

没有日志或错误,字符串不会被更改。我已经尝试过使用NSString(如文档所述)和NSMutableString。

最受欢迎的线索。

4 个答案:

答案 0 :(得分:35)

我建议改为(documentation):

NSString *myString = @"some text";
myString = [myString stringByAppendingFormat:@" = %d", 3];

来自文档:

  

返回通过向接收器附加由给定格式字符串和以下参数构造的字符串而生成的字符串。

答案 1 :(得分:12)

它正在工作,你只是忽略了返回值,这是带有附加格式的字符串。 (参见the docs。)您无法修改NSString - 要修改NSMutableString,请改用-appendFormat:

当然,在您的玩具示例中,您可以将其缩短为:

NSString *myString = [NSString stringWithFormat:@"some text = %d", 3];

但是,您可能需要将格式字符串附加到在别处创建的现有字符串。在这种情况下,特别是如果你要附加多个部分,最好考虑并平衡使用可变字符串或几个不可变的自动释放字符串的优点和缺点。

答案 2 :(得分:11)

使用@""创建字符串总是会产生不可变的字符串。如果要创建新的NSMutableString,请执行以下操作。

NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];

答案 3 :(得分:-1)

在添加本地化字符串时,我收到了类似的警告消息。这就是我解决它的方式

NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")];