Beta 3一切正常,现在出现一个奇怪的错误,而且我不知道如何解决它。尝试了所有类似问题的解决方案。
这是我的代码:
if !name.isEmpty {
var splitted: [String] = name.componentsSeparatedByString(" ")
for curPart in splitted {
if !curPart.isEmpty {
acronym += curPart.substringToIndex(1) //Error
}
}
if (acronym as NSString).length > 2 {
acronym = acronym.substringToIndex(2) //Error
}
}
两条标记线都给了我相同的错误:
有人能帮我吗?还是Beta 4有漏洞?
谢谢!
最佳答案
在Beta 4中,Swift的String.Index处理再次发生了变化-现在,当需要Int
时,您将无法提供String.Index
。处理它的方法是使用String.Index
方法创建所需的advance
:
if !name.isEmpty {
var splitted: [String] = name.componentsSeparatedByString(" ")
for curPart in splitted {
if !curPart.isEmpty {
acronym += curPart.substringToIndex(advance(curPart.startIndex, 1))
}
}
if countElements(acronym) > 2 {
acronym = acronym.substringToIndex(advance(acronym.startIndex, 2))
}
}
所有这些都是基于确保正确处理Unicode字符串-由于不同的Unicode字符可以具有不同的大小,因此,纯整数索引将隐藏字符串不是随机访问的事实。