我如何从该函数获取索引

时间:2019-06-19 04:45:35

标签: swift dictionary charts

这是iOS图表库(LineChart)的演示,我想输入数据而不是arc4random数据。 我的数据在Array中,所以我不得不使用索引,但是我听不懂(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 :(得分:0)

看来您是iOS的新手,而且很快。您正在寻找的是对闭包功能的快速了解, map函数,称为高阶函数

来自Apple doc(https://developer.apple.com/documentation/swift/array/3017522-map):

  

返回一个数组,其中包含将给定闭包映射到序列元素上的结果。

换句话说,它根据您作为参数传递的结尾闭包将您的数组映射到另一个数组。


在您的具体情况下,他的阅读方法:

  1. (0..<count):创建一个count长度
  2. 的数组

示例:如果count = 4(0..<count)[0, 1, 2, 3]

  1. 如前所述,map函数会将元素的每个转换为另一个元素(因此保持数组的长度)。
在您的情况下,

val = Double(arc4random_uniform(UInt32(count))+3)等于使用count值计算的随机数,并使用该随机值创建新的ChartDataEntry

总结起来,整个代码只是说“我将创建一个count个长度为ChartDataEntry的随机数组”,我想这是一个模型


我建议您在这里阅读有关闭包的信息:

和高阶函数(例如map(_:)):

答案 1 :(得分:0)

let值=(0 .. ChartDataEntry中         let val = Double(arc4random_uniform(UInt32(count))+ 3)      返回ChartDataEntry(x:Double(i),y:val)   }

映射并返回的值是一个哈希函数。 (arc4random)。 您正在获取的索引只是设置图表的X轴,例如0,1,2等。 并根据函数返回值设置了图Y(arc4random)