这是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
}
答案 0 :(得分:0)
看来您是iOS的新手,而且很快。您正在寻找的是对闭包功能的快速了解,加 map
函数,称为高阶函数
来自Apple doc(https://developer.apple.com/documentation/swift/array/3017522-map):
返回一个数组,其中包含将给定闭包映射到序列元素上的结果。
换句话说,它根据您作为参数传递的结尾闭包将您的数组映射到另一个数组。
在您的具体情况下,他的阅读方法:
(0..<count)
:创建一个count
长度示例:如果count = 4
则(0..<count)
是[0, 1, 2, 3]
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)