stringByAppendingFormat不起作用

12 objective-c string-concatenation nsstring

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

NSString *myString = @"some text";
[myString stringByAppendingFormat:@"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)

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

任何线索最受欢迎.

Pau*_*nch 36

我建议纠正(文档):

NSString *myString = @"some text";
myString = [myString stringByAppendingFormat:@" = %d", 3];
Run Code Online (Sandbox Code Playgroud)

来自文档:

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


Qui*_*lor 12

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

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

NSString *myString = [NSString stringWithFormat:@"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)

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


sti*_*igi 11

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

NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)