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 } }
两条标记线都给了我相同的错误:
类型“ String.Index”不符合协议“ IntegerLiteralConvertible”
有人能帮我吗?还是Beta 4有漏洞?谢谢!
在Beta 4中,Swift的String.Index处理再次发生了变化- 现在,Int当String.Index期望a时,您将无法提供。处理该问题的方法是String.Index使用advance方法创建所需的代码:
Int
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字符可以具有不同的大小,因此,纯整数索引将掩盖字符串不是随机访问的事实。