2010-05-11 9 views
11

我有一个NSString,并不能应用以下语句:stringByAppendingFormat不工作

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

没有日志或错误,字符串只是没有得到改变。我已经尝试过使用NSString(如文档)和NSMutableString。

任何线索最受欢迎。

回答

35

我建议校正至(documentation):

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

从文档:

返回附加到所述接收器从一个给定的格式字符串构造的串和下面由串参数。

11

使用@""创建字符串总是会产生不可变的字符串。如果你想创建一个新的NSMutableString,按如下操作。

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

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

当然,在你的玩具例如,您可以缩短到这一点:

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

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

-1

我附加了一个本地化的字符串时有一个类似的警告消息。这是我如何解决它

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

除非你真的有一个格式来追加,最好使用-stringByAppendingString:来代替。 – trudyscousin 2012-10-03 19:37:59