swift - stringByAppendingString 不返回修改后的字符串

标签 swift

这就是我在 playground 文件中尝试的内容。我想要的结果是使用 stringByAppendingString 的第二个 println 结果。 stringByAppendingString 不是应该返回修改后的字符串吗?我在这里做错了什么?

var reportSummary:String = "Total: \t\t300.00"
reportSummary.stringByAppendingString("Net: \t\t200.00")
println(reportSummary)
// Total:    300.00


var reportSum = "Total: \t300.00\n"
var netSum = "Net: \t\t200.00\n"
var sum = reportSum + netSum
println(sum)
// Total:    300.00
// Net:      200.00

最佳答案

stringByAppendingString 消息创建并返回一个新的 String。它不会修改接收器(原始 String)。

如果你想使用组合的String,你需要对返回值做一些事情。您发布的代码忽略了返回值。例如,您可以将返回的 String 存储在您的 reportSummary 变量中,如下所示:

var reportSummary:String = "Total: \t\t300.00"
reportSummary = reportSummary.stringByAppendingString("\nnNet: \t\t200.00")
println(reportSummary)

不过,您也可以使用 += 运算符:

var reportSummary = "Total: \t\t300.00"
reportSummary += "\nNet: \t\t200.00"
println(reportSummary)

或者你可以使用extend方法:

var reportSummary = "Total: \t\t300.00"
reportSummary.extend("\nNet: \t\t200.00")
println(reportSummary)

或者你可以显式地使用基础类型NSMutableString:

let reportSummary: NSMutableString = "Total: \t\t300.00"
reportSummary.appendString("\nNet: \t\t200.00")
println(reportSummary)

关于swift - stringByAppendingString 不返回修改后的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115994/

相关文章:

ios - Swift 中 NSLayoutContraint 的简单用法?

ios - 带有文本字段的 uitableviewcell 传递更改的数据

swift - 场景套件 : How to make SCNNode only rotate horizontally in Swift 2. 0

ios - 无法在 swift 中获得回调?

ios - 如何在 iOS 上获取多个目的地的预计到达时间?

ios - Swift fetch 请求返回 0 个结果,尽管明显有 192 个结果

ios - 如何使 iOS 按钮的点击要求较低的准确性 (Swift)

ios - 位掩码不工作。 SpriteKit swift

ios - 更改类中常量的值

swift - 返回主界面 Controller 后 WKCrownSequencer 不工作