【问题标题】:Swift cannot assign value of type '()' to type 'String?'Swift 无法将类型“()”的值分配给类型“字符串?”
【发布时间】:2016-05-13 15:25:48
【问题描述】:

我正在学习 Swift2/iOS 应用程序开发。我对编译前 Xcode 抛出的错误感到困惑。这是引发错误的代码:

let dotpos = display.text!.rangeOfString(".")
if dotpos != nil {
    display.text = display.text!.removeRange(dotpos!)
}

抛出的错误是(在“display.text = display.text!.removeRange(dotpos!)”这一行):

无法将类型“()”的值分配给类型“字符串”?

注意:display 是一个UILabel 对象。

有人能指出我可能犯的错误吗?

【问题讨论】:

  • removeRange 没有() 表示的返回值
  • @vadian 因为display.text 的类型是String?(通过option+click 确认),所以不应该将返回值推断为String? 吗?
  • 否,方法标记为mutating,表示接收者原地变异。
  • 请帮忙解决同样的错误 let textString = cell.streetAddLabel.text = NSString(format: "%@\n%@", (restaurant.address != nil ? restaurant.address! : "" ), (restaurant.crossStreet != nil ? restaurant.crossStreet! : "")) 一样! NSString print("tt (textString)") cell.streetAddLabel.text = textString // 此处出错

标签: ios swift uilabel


【解决方案1】:

您需要查看相关文档 (Apple swift String link)

let dotpos = display.text!.rangeOfString(".")
if dotpos != nil {
    display.text!.removeRange(dotpos!)
}

这段代码可以工作,removeRange 函数没有返回任何东西,文档说

变异函数 removeRange(_ subRange: Range)

表示当您调用文本标签上的方法时,文本会发生变化。

文本直接更改,更改时无需指定新值。

【讨论】:

  • 现在所见即所得!谢谢!
  • 酷,快乐的编码:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多