使用结构存储动态数据

时间:2019-05-10 10:11:18

标签: arrays swift struct

我对Swift编程还很陌生,我一直在关注在线教程,以使用结构从静态虚拟数据创建条形图。下面是虚拟数据:

private static func createDummyData() -> [ChartViewData] {

    let one = ChartViewData(date: "2/5/19", weight: 50)
    let two = ChartViewData(date: "3/5/19", weight: 60)
    let three = ChartViewData(date: "4/5/19", weight: 65)
    let four = ChartViewData(date: "8/5/19", weight: 55)
    let five = ChartViewData(date: "9/5/19", weight: 100)

    return[one, two, three, four, five]
}

我的结构定义为:

struct ChartViewData {
    var date: String
    var weight: Double
}

我想使用存储在数组 date weight 中的自己的数据填充条形图。在不更改工作图表模型和结构的情况下,最佳方法是什么?

预先感谢

编辑:大家道歉,我的意思是商店没有在问题标题中排序!

2 个答案:

答案 0 :(得分:0)

您可以通过Application ping数组并ChartViewData来创建zip实例

map

日期格式“ d / M / yy”不适用于对日期进行排序。使用字符串格式“ yy / MM / dd”或将let dateArray = ["2/5/19", "3/5/19", "4/5/19", "8/5/19", "9/5/19"] let weightArray = [50.0, 60.0, 65.0, 55.0, 100.0] let chartData = zip(dateArray, weightArray).map(ChartViewData.init) print(chartData) 成员声明为date

答案 1 :(得分:0)

您可以使用存储在数组 date weight 中的自己的数据,通过迭代数组来填充条形图。像这样先更改createDummyData方法

private static func createDummyData(dateArray: [String], weightArray: [Double]) -> [ChartViewData] {
    var dataArray: [ChartViewData] = []
    for i in 0..<dateArray.count {
        let barData = ChartViewData(date: dateArray[i], weight: weightArray[i])
        dataArray.append(barData)
    }
    return dataArray
}

在调用此方法时,将数组作为参数传递

YourClassName.createDummyData(dateArray: date, weightArray: weight)

您可以更短地更改方法

private static func createDummyData(dateArray: [String], weightArray: [Double]) -> [ChartViewData] {
    return zip(dateArray,weightArray).map { ChartViewData(date: $0, weight: $1) }
}