Диапазон индексов [UInt8] — Swift

#swift #subscript #uint8array

#swift #индекс #uint8array

Вопрос:

Итак, проблема, с которой я сталкиваюсь, заключается в том, что у меня есть объект с аргументом в init(), для которого требуется [UInt8] . Я хочу иметь возможность извлекать диапазон из другого массива и использовать его при инициализации. Смотрите пример.

 class Test {

    init(fromArray: [UInt8]) {
    // performs work
    }
}

let myStockArray: [UInt8] = [1,2,3,4,5,6,7,8] // reference array

let test = Test(fromArray: myStockArray[1...4]) // doesn't work
  

Как я могу заставить это работать? Ошибка, которую я получаю: невозможно проиндексировать значение типа ‘[UInt8]’ с индексом типа ‘CountableClosedRange’

Ответ №1:

Подписка на массив с диапазоном не возвращает массив, и это основная проблема. Вы пытаетесь установить ArraySlice<UInt8> данные типа для конструктора, которые имеют внутренний [UInt8] тип.

Попробуйте этот подход:

 class Test {

    init(fromArray: [UInt8]) {
        // performs work
    }
}

let myStockArray: [UInt8] = [1,2,3,4,5,6,7,8] // reference array

let test = Test(fromArray: Array(myStockArray[1...4]))
  

Комментарии:

1. Ах, вот оно что. Спасибо!