当我尝试使用最新版本的Swift将label1
设置为string
的第一个字母时,我在最后一行收到错误。如何解决这个问题?
let preferences = UserDefaults.standard
let name1 = "" + preferences.string(forKey: "name")!
let name2 = name1
label1.text = name2.substring(from: 0)
答案 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