String不能用int索引

时间:2016-11-09 16:14:03

标签: ios swift3

当我尝试使用最新版本的Swift将label1设置为string的第一个字母时,我在最后一行收到错误。如何解决这个问题?

let preferences = UserDefaults.standard
let name1 = "" + preferences.string(forKey: "name")!
let name2 = name1
label1.text = name2.substring(from: 0)

4 个答案:

答案 0 :(得分:11)

这是因为substring方法接受String.Index而不是普通Int。试试这个:

let index = name2.index(str.startIndex, offsetBy: 0) //replace 0 with index to start from
label.text = name2.substring(from: index)

答案 1 :(得分:1)

Swift 3中字符串的第一个字母是

label1.text = String(name2[name2.startIndex])

字符串无法由Swift 2中的Int索引

答案 2 :(得分:0)

它要求索引,而不是Int。

let str = "string"
print(str.substring(from: str.startIndex))

答案 3 :(得分:0)

这里有一些功能使其更具客观性 - 例如

func substringOfString(_ s: String, toIndex anIndex: Int) -> String
{
    return s.substring(to: s.index(s.startIndex, offsetBy: anIndex))
}


func substringOfString(_ s: String, fromIndex anIndex: Int) -> String
{
   return s.substring(from: s.index(s.startIndex, offsetBy: anIndex))
}


//examples
let str = "Swift's String implementation is completely and utterly irritating"
let newstr = substringOfString(str, fromIndex: 30) // is completely and utterly irritating
let anotherStr = substringOfString(str, toIndex: 14) // Swift's String
let thisString = substringOfString(anotherStr, toIndex: 5) // Swift