我正在尝试一些简单的代码,我在natashatherobot.com找到了。
var str = "Hello, playground"
let rangeOfHello = Range(start: str.startIndex, end: advance(str.startIndex, 5))
let helloStr = str.substringWithRange(rangeOfHello)
return helloStr
我在 Playgrounds 中试用它时效果很好:
但是当我在 Xcode 项目中尝试使用它时,它会给我一个编译错误:
为什么会发生这种情况?
答案 0 :(得分:2)
您没有指定func
的返回类型:
func getStringBetween(startString: String, endString: String) -> String {
答案 1 :(得分:2)
在你的函数声明中,你说它返回一个void,但你试图返回一个字符串,你需要在函数末尾添加-> String
以匹配你想要做的事情< / p>
你的职能:
func getStringBetween(startString: String, endString: String) -> ()
应该是:
func getStringBetween(startString: String, endString: String) -> String
答案 2 :(得分:0)
问题是方法getStringBetween(:endString:)
,您在extension
String
中定义了该方法。
此方法未定义返回类型(参数列表后面没有-> Type
)。因此隐式返回类型为Void
,因此您的方法可以写为:
func getStringBetween(startString: String, endString: String) -> Void
在Swift中,类型Void
相当于空元组()
。
因此,问题是Swift期望返回类型为Void
()
,但您返回的是String
。
通过将返回类型String
添加到方法声明中可以轻松解决此问题:
func getStringBetween(startString: String, endString: String) -> String
旁注:
在编写return
时,如果没有指定要返回的内容,Swift会自动返回()
。