2017-09-25 1 views
2

I umgewandelt nur zu Swift 4 und bin jetzt die folgende Fehlermeldung erhalten: keinen Wert vom Typ ‚String.UnicodeScalarView‘ mit einem Index vom Typ ‚CountableRange‘ (auch bekannt als ‚CountableRange‘)String Indizierung Fehler

SUBSCRIPT Kann Die Codezeilen sind:

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

Wie kann ich es korrigieren?

Antwort

4

Sie verwenden ein CountableRange<Int> aber für den Zugriff auf die Zeichen eines String Sie CountableRange<String.Index> verwenden müssen:

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

Das ist, weil in Swift, String Typ einen Indextyp von String.Index und nicht die von Int hat.