Как исправить этот код, который перебирает индексы в массиве?

#arrays #swift #bluetooth-lowenergy

#массивы #swift #bluetooth-lowenergy

Вопрос:

Я пытаюсь исправить этот код. На данный момент я получаю эту ошибку.

Для индекса ‘subscript(_:)’ требуется, чтобы ‘UInt8.Привязанный ‘ соответствует ‘FixedWidthInteger’

и

Нижний индекс ‘subscript(_:)’ требует, чтобы ‘UInt8’ соответствовал ‘RangeExpression’

Не уверен, что означают ошибки в этом контексте.

 let v = characteristic.value;

let count = (v?.count)! / MemoryLayout<UInt8>.size
var array = [UInt8](repeating: 0, count: count)
v?.copyBytes(to: amp;array, count:count * MemoryLayout<UInt8>.size)

let numCharacteristics = (v![0] amp; 0xf0) >> 4
let numDataPoints = v![0] amp; 0x0f

for index in 0..<numDataPoints-1 {

  datapoint = v![index]   (v![index 1] << 8)
  datapointArray.append(datapoint!)

}
  

Ответ №1:

Data тип не может быть подписан на UInt8 . Попробуйте:

 for index in 0..<numDataPoints-1 {
      let intIndex = Int(index)
      let datapoint = v![intIndex]   (v![intIndex 1] << 8)
      datapointArray.append(datapoint)
}