Swift 字符串下标错误

Swift 字符串下标错误,swift,swift4,Swift,Swift4,我刚转换成Swift 4,现在出现以下错误: 无法使用“CountableRange”(也称为“CountableRange”)类型的索引为“String.UnicodeScalarView”类型的值下标 代码行为: extension AppInvite.PromoCode { fileprivate static func truncate(string: String) -> String { let validCharacters = CharacterSet.al

我刚转换成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)
  }
}
扩展名AppInvite.PromoCode{
fileprivate静态函数截断(string:string)->string{
设validCharacters=CharacterSet.alphanumerics
let cleaned=string.unicodeScalars.filter{
validCharacters.contains(UnicodeScalar(UInt16($0.value))!)
}
让范围=0..<分钟(10,清洁.计数)
让characters=cleaned[range].map(Character.init)
返回字符串(个字符)
}
}

如何更正它?

您使用的是
可数范围
,但要访问字符串的字符,必须使用
可数范围

let range=cleaned.startIndex。。
let range = cleaned.startIndex..<min(cleaned.index(cleaned.startIndex, offsetBy: 10), cleaned.endIndex)