12

我有一个 NSString 并且未能应用以下语句:

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

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

任何线索最受欢迎。

4

4 回答 4

37

我建议更正(文档):

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

从文档:

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

于 2010-05-11T14:40:12.400 回答
12

它正在工作,你只是忽略了返回值,它是带有附加格式的字符串。(请参阅文档。)您不能修改 NSString — 要修改 NSMutableString,请改用-appendFormat :。

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

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

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

于 2010-05-11T17:52:56.007 回答
11

创建字符串@""总是会产生不可变的字符串。如果您想创建一个新的 NSMutableString,请按以下方式操作。

NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];
于 2010-05-11T14:41:09.713 回答
-1

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

NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")];
于 2012-08-25T21:49:41.040 回答