Невозможно создать диапазон в Swift 3

17

Я пытаюсь сделать диапазон в Swift 3, который у меня уже был в Swift 2, но он продолжает давать мне эту ошибку: % Co_de%

Вот мой код:

let range = expireRange!.startIndex.advancedBy(n: 7) ..< expireRange!.startIndex.advancedBy(n: 16)

expiredRange - это String may not be indexed with 'Int', it has variable size elements

В Swift 2 у меня было:

let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
    
задан lagoon 28.06.2016 в 09:53
источник

1 ответ

40

В Swift 3 «Коллекции перемещают свой индекс», см.   Новая модель для коллекций и индексов о быстрой эволюции .

Вот пример диапазонов строк и индексов:

let string = "ABCDEFG"
if let range = string.range(of: "CDEF") {
    let lo = string.index(range.lowerBound, offsetBy: 1)
    let hi = string.index(range.lowerBound, offsetBy: 3)
    let subRange = lo ..< hi
    print(string[subRange]) // "DE"
}

public func index(_ i: Index, offsetBy n: IndexDistance) -> Index
Метод

вызывается в строке для вычисления новых индексов из диапазон (который теперь имеет свойства lower/upperBound вместо % Co_de%).     

ответ дан Martin R 28.06.2016 в 10:05
источник