2017-09-25 30 views
2

我只是转换为雨燕4,我现在得到以下错误: 无法下标类型“String.UnicodeScalarView”的值和类型“CountableRange”(又名“CountableRange”)字符串下标错误

的索引代码行如下:

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) 
    } 
} 

我该如何纠正它?

回答

4

您使用的是CountableRange<Int>但访问字符串中的字符,你必须使用CountableRange<String.Index>

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

这是因为在雨燕,String类型有一个指数型String.Index而不是Int