语法从Swift更改为Swift 2,无法使用字符串和额外的NSErrorPointer参数调用enumerate
我正在使用Xcode 6开发Swift 1.2,但现在我已经使用Swift 2.1安装了Xcode 7。Swift 2.1中有许多错误和许多语法更改,尽管我的代码在Swift 1.2中运行良好。第一个问题是这种方法:语法从Swift更改为Swift 2,无法使用字符串和额外的NSErrorPointer参数调用enumerate,swift,string,swift2,Swift,String,Swift2,我正在使用Xcode 6开发Swift 1.2,但现在我已经使用Swift 2.1安装了Xcode 7。Swift 2.1中有许多错误和许多语法更改,尽管我的代码在Swift 1.2中运行良好。第一个问题是这种方法: func getSubstringUpToIndex(index: Int, fromString str: String) -> String { var substring = "" for (i, letter) in enumerate(str) {
func getSubstringUpToIndex(index: Int, fromString str: String) -> String
{
var substring = ""
for (i, letter) in enumerate(str) {
substring.append(letter)
if i == index - 1 {
break
}
}
return substring
}
此行出现另一个问题,调用中的额外参数“error”:
let jsonResult: Dictionary = NSJSONSerialization.JSONObjectWithData(self.mutableData, options: NSJSONReadingOptions.MutableContainers, error: &error) as! Dictionary<String, AnyObject>
在这两种情况下,它都是Swift 1.2代码,而不是2.0 在第一段代码中,enumerate方法不再存在,您可以通过以下方式对其进行更新:
func getSubstringUpToIndex(index: Int,
fromString str: String) -> String
{
var substring = ""
for (i, letter) in str.characters.enumerate() {
substring.append(letter)
if i == index - 1 {
break
}
}
return substring
}
或者通过这种方式,使用substringRithRange:
试穿一下
粘贴的第二行不再有效,因为swift 2现在使用try/do/catch处理错误,最后一个参数nsErrorInter不再存在,请了解更多信息。和的可能重复项
func getSubstringUpToIndex2(index: Int,
fromString str: String) -> String {
let range = str.startIndex.advancedBy(0)..<str.startIndex.advancedBy(index)
return str.substringWithRange(range)
}