Использование структуры для хранения динамических данных - PullRequest
0 голосов
/ 10 мая 2019

Я довольно новичок в программировании на 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 и вес , чтобы заполнить гистограмму.Каков наилучший подход для этого без изменения модели и структуры рабочего графика?

Заранее спасибо

РЕДАКТИРОВАТЬ: Приношу свои извинения всем, я имел в виду не сортировать в заголовке вопроса!

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Вы можете использовать свои собственные данные, хранящиеся в массивах 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) }
}
0 голосов
/ 10 мая 2019

Вы можете создать ChartViewData экземпляров, zip пропингуя массивы и map их

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)

Формат даты "d / M / yy" не подходит для сортировки дат. Либо используйте строковый формат "yy / MM / dd", либо объявите элемент date как Date.

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