지난 며칠 동안 iOS 차트를 사용하는 법을 배우고 API에서 호출 된 '단일'데이터를 다룰 때 성공적으로 작업했습니다.어레이에서 여러 데이터를 가져올 때 iOS 차트를 사용하는 방법은 무엇입니까?
그러나 배열에서 여러 데이터를 가져 오려면 여기에 멈추었습니다.
내 목표는 아래의 배열의 각 user_name
의 winning_streak
기반으로하는 막 대형 차트를 만드는 것입니다 :
이 내가 필요로하는 곳에이다 :
["leagueStats": {
winningStreak = (
{
id = 2;
"user_name" = Dicky;
"winning_streak" = 5;
},
{
id = 6;
"user_name" = G;
"winning_streak" = 2;
},
{
id = 5;
"user_name" = Sultan;
"winning_streak" = 0;
}
);
}
]
이것은 API를 검색 내 코드입니다 도움 - 어떤 종류의 루프를 만들어야합니까? 제공된 답변에서 그래프에 표시 할 사용자의 수는 미리 프로그래밍되어 있습니다.
아래의 현재 코드는 배열의 첫 번째 객체 만 선택합니다. 배열을 순환하고 원하는 변수를 채우려면 어떻게해야합니까?
if let dict = json?["leagueStats"] as? [String:AnyObject] {
// WINNING STREAK
if let dataWinStreak = dict["winningStreak"] as? [[String : AnyObject]] {
let newdictWinStreak = dataWinStreak.first! // I'm guess this needs to be removed and this section re-structured?
let tempWinStreakNumber = newdictWinStreak ["winning_streak"] as? String
let tempWinStreakNewNumber = Int(tempWinStreakNumber!)
let doubleWinStreak = Double(tempWinStreakNewNumber!)
self.winStreak = doubleWinStreak
self.winningStreak = ["Wins"]
let games = [self.winStreak]
self.setWinStreakChart(dataPoints: self.winningStreak, values: games)
}
그러나 상기 코드 만 5
사용하는 배열의 첫 번째 기록 정보로 당긴다.
난 5
, 2
및 0
의 대응하는 값을, (3) 다른 열 Dicky
, G
, Sultan
를 생성 할 수 있도록하려는.
막대 그래프를 표시하는 코드입니다. 현재는 1 열만 표시하고 있습니다 (5
).
func setWinStreakChart(dataPoints: [String], values: [Double]){
let formato:WinningStreakFormatter = WinningStreakFormatter()
let xaxis:XAxis = XAxis()
winningStreakBarChart.noDataText = "you need to provide some data for the chart."
var dataEntries: [BarChartDataEntry] = Array()
for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(dataEntry)
formato.stringForValue (Double(i), axis: xaxis)
}
xaxis.valueFormatter = formato
winningStreakBarChart.xAxis.valueFormatter = xaxis.valueFormatter
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Games Played")
let chartData = BarChartData(dataSets: [chartDataSet])
chartData.addDataSet(chartDataSet)
winningStreakBarChart.data = chartData
winningStreakBarChart.xAxis.granularityEnabled = true
winningStreakBarChart.xAxis.granularity = 1.0
self.winningStreakBarChart.xAxis.labelPosition = XAxis.LabelPosition.bottom
}
이 내가 가진 것입니다 :
이이상적으로, 내가 원하는 것은 그 전설 Games _Played
이 Winning Streak
말을 할 수있는 API에서 user_name
, 될 수있는 라벨 '연승'입니다. 이 특별한 경우에는 배열에있는 3 개의 user_names에 대해 3 개의 열을 원합니다.
이 작업이 완료되면 보조 목표로 동일한 user_name
으로 그룹화되는 Losing Streak
에 대한 다른 데이터 세트를 추가하고 싶습니다.
누군가이 방법을 보여줄 수 있습니까? 감사합니다
감사 프라 카쉬 - 내가 거의 다 내 마지막 장애물이 당신의 대답에 winningStreakDM 년대이다 : 나는 미리 프로그램 (즉 사용자 3 명)이다. 배열을 통해 winningStreakDM을 채우려면 어떻게해야합니까? 위의 코드에서 배열의 첫 번째 객체 만 가져오고 내 목표를 달성하는 방법을 모르는 방법입니다. 나는이 점을 참고로하여 질문을 갱신했다. 감사합니다 – RDowns
@RDowns 'winningStreak'의 배열을 반복하고 winningStreakDM을 준비하거나 for 루프의'winningStreak' 배열로'dataPoints'를 대체하여'BarChartDataEntry' 객체를 준비 할 수 있습니다. –
이렇게하려면 struct와 flatMap을 만들어야합니까? 아니면 나는 잘못된 길로 내려 가고 있습니까? – RDowns