Swift 无法将类型“()”的值分配给类型“字符串?”
Posted
技术标签:
【中文标题】Swift 无法将类型“()”的值分配给类型“字符串?”【英文标题】:Swift cannot assign value of type '()' to type 'String?' 【发布时间】: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 // 此处出错
【参考方案1】:
您需要查看相关文档 (Apple swift String link)
let dotpos = display.text!.rangeOfString(".")
if dotpos != nil
display.text!.removeRange(dotpos!)
这段代码可以工作,removeRange
函数没有返回任何东西,文档说
变异函数 removeRange(_ subRange: Range)
表示当您调用文本标签上的方法时,文本会发生变化。
文本直接更改,更改时无需指定新值。
【讨论】:
现在所见即所得!谢谢! 酷,快乐的编码:)以上是关于Swift 无法将类型“()”的值分配给类型“字符串?”的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法将“[String]”类型的值分配给 swift 中的“String”类型
Swift 4:无法将类型“(Void)-> Void”的值分配给类型“(()-> Void)?”
在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。