我刚刚转换为Swift 4并且现在出现以下错误:无法使用类型为"CountableRange"(又名为"CountableRange")的索引下标"String.UnicodeScalarView"类型的值
代码行是:
extension AppInvite.PromoCode {
fileprivate static func truncate(string: String) -> String {
let validCharacters = CharacterSet.alphanumerics
let cleaned = string.unicodeScalars.filter {
validCharacters.contains(UnicodeScalar(UInt16($0.value))!)
}
let range = 0 ..< min(10, cleaned.count)
let characters = cleaned[range].map(Character.init)
return String(characters)
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何纠正?
您正在使用CountableRange<Int>但要访问必须使用的String字符CountableRange<String.Index>:
let range = cleaned.startIndex..<min(cleaned.index(cleaned.startIndex, offsetBy: 10), cleaned.endIndex)
Run Code Online (Sandbox Code Playgroud)
那是因为在Swift中,Stringtype的索引类型是String.Index而不是Int.
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |