2017-09-25 4 views
2

난 그냥 스위프트 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) 
    } 
} 

어떻게 해결할 수 있습니까? 당신은이 CountableRange<Int>하지만 문자열의 문자에 액세스하면 CountableRange<String.Index>을 사용해야합니다 사용하는

답변

4

:

스위프트에, String 유형이 인덱스 유형 String.Index하지 Int의이 있기 때문에입니다
let range = cleaned.startIndex..<min(cleaned.index(cleaned.startIndex, offsetBy: 10), cleaned.endIndex) 

.

관련 문제