Swift - 字符串 substringWithRange - 'String' 不可转换为“()”
Swift - String substringWithRange - 'String' is not convertible to '()'
我正在尝试一些我在 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 项目中使用它时,它给我一个编译错误:
知道为什么会这样吗?
您没有指定 func
的 return 类型:
func getStringBetween(startString: String, endString: String) -> String {
在你的函数声明中你说它 return 是一个空的,但你试图 return 一个字符串,你需要在你的函数的末尾添加 -> String
函数来匹配你正在尝试做的事情
你的函数:
func getStringBetween(startString: String, endString: String) -> ()
应该是:
func getStringBetween(startString: String, endString: String) -> String
问题是您在 extension
中为 String
定义的方法 getStringBetween(:endString:)
。
此方法未定义 return 类型(参数列表后没有 -> Type
)。因此隐含的 return 类型是 Void
,所以你的方法可以写成:
func getStringBetween(startString: String, endString: String) -> Void
在 Swift 中,类型 Void
相当于一个空元组 ()
。
因此,问题是 Swift 期望 Void
的 Void
类型由 ()
表示,但您 return 正在 String
.
通过将 return 类型 String
添加到您的方法声明中可以轻松解决此问题:
func getStringBetween(startString: String, endString: String) -> String
旁注:
编写 return
时,如果没有指定 returned 的内容,Swift 会自动 returns ()
.
我正在尝试一些我在 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 项目中使用它时,它给我一个编译错误:
知道为什么会这样吗?
您没有指定 func
的 return 类型:
func getStringBetween(startString: String, endString: String) -> String {
在你的函数声明中你说它 return 是一个空的,但你试图 return 一个字符串,你需要在你的函数的末尾添加 -> String
函数来匹配你正在尝试做的事情
你的函数:
func getStringBetween(startString: String, endString: String) -> ()
应该是:
func getStringBetween(startString: String, endString: String) -> String
问题是您在 extension
中为 String
定义的方法 getStringBetween(:endString:)
。
此方法未定义 return 类型(参数列表后没有 -> Type
)。因此隐含的 return 类型是 Void
,所以你的方法可以写成:
func getStringBetween(startString: String, endString: String) -> Void
在 Swift 中,类型 Void
相当于一个空元组 ()
。
因此,问题是 Swift 期望 Void
的 Void
类型由 ()
表示,但您 return 正在 String
.
通过将 return 类型 String
添加到您的方法声明中可以轻松解决此问题:
func getStringBetween(startString: String, endString: String) -> String
旁注:
编写 return
时,如果没有指定 returned 的内容,Swift 会自动 returns ()
.