как мне получить индекс из этой функции - PullRequest
0 голосов
/ 19 июня 2019

это демонстрация библиотеки iOS Charts (LineChart), и я хочу ввести свои данные вместо данных arc4random.Мои данные находятся в массиве, поэтому мне нужно использовать индекс, но я не могу понять код (0..<count).map { (i) -> ChartDataEntry.

func setChartValues(_ count : Int = 24) {

    let values = (0..<count).map { (i) -> ChartDataEntry in
        let val = Double(arc4random_uniform(UInt32(count))+3)
        return ChartDataEntry(x: Double(i), y: val)
    }
    let set1 = LineChartDataSet(entries: values , label : "DataSet 1")
    let data = LineChartData(dataSet: set1)
    self.lineChartView.data = data
}

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

let values ​​= (0 .. ChartDataEntry в let val = Double (arc4random_uniform (UInt32 (count)) + 3) return ChartDataEntry (x: Double (i), y: val) }

Отображаемое значение и возвращаемое значение можно сказать как хеш-функцию. (Arc4random). Индекс, который вы берете, это просто установка оси X графика, например, 0, 1, 2 и т. Д. и ваш график Y он установлен согласно функциям возврата (arc4random)

0 голосов
/ 19 июня 2019

Кажется, вы новичок в iOS и Swift.То, что вы ищете, - это понимание функционирования замыканий в swift, plus map функция, которая называется функция высокого порядка

из apple doc(https://developer.apple.com/documentation/swift/array/3017522-map):

Возвращает массив, содержащий результаты отображения заданного замыкания на элементы последовательности.

Другими словами, он отображает ваш массивв другой массив, в соответствии с завершающим замыканием, которое вы передали в качестве параметра.


В вашем конкретном случае вот как его читать:

  1. (0..<count): создает массив count длина

пример: если count = 4, то (0..<count) равно [0, 1, 2, 3]

Как уже говорилось ранее, функция map преобразует каждого вашего элемента в другой (следовательно, сохраняя длину массива).

в вашем случае val = Double(arc4random_uniform(UInt32(count))+3)будет равно случайному числу, вычисленному со значением count, и создаст новое ChartDataEntry с этим случайным значением.

Чтобы подвести итог, весь код просто говорит: "Я создам массив произвольной длины count ChartDataEntry", я думаю, в качестве макета


Я предлагаю вамчитать о замыканиях здесь:

и функции высокого порядка (например, map(_:)) здесь:

...