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

Я пытаюсь создать диапазон в Swift 3, который у меня уже был в Swift 2, но он продолжает давать мне эту ошибку: String may not be indexed with 'Int', it has variable size elements

Вот мой код:

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

expiredRange является Range<Index>?

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

let range = expireRange!.startIndex.advancedBy(7)...expireRange!.startIndex.advancedBy(16)
17 голосов | спросил lagoon 28 J0000006Europe/Moscow 2016, 10:53:33

1 ответ


0

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

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

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 вместо start/endIndex)

ответил Martin R 28 J0000006Europe/Moscow 2016, 11:05:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132