ソースを参照

Merge pull request #4829 from FelixHerrmann/master

Fix chart only drawing first entry
Pierre-Marc Airoldi 3 年 前
コミット
2c77b2b8a4

+ 7 - 4
Source/Charts/Data/Implementations/Standard/ChartDataSet.swift

@@ -217,7 +217,7 @@ open class ChartDataSet: ChartBaseDataSet
         rounding: ChartDataSetRounding) -> Int
         rounding: ChartDataSetRounding) -> Int
     {
     {
         var closest = partitioningIndex { $0.x >= xValue }
         var closest = partitioningIndex { $0.x >= xValue }
-        guard closest < endIndex else { return rounding == .closest ? (endIndex-1) : -1 }
+        guard closest < endIndex else { return index(before: endIndex) }
 
 
         var closestXValue = self[closest].x
         var closestXValue = self[closest].x
 
 
@@ -240,10 +240,13 @@ open class ChartDataSet: ChartBaseDataSet
             // The closest value in the beginning of this function
             // The closest value in the beginning of this function
             // `var closest = partitioningIndex { $0.x >= xValue }`
             // `var closest = partitioningIndex { $0.x >= xValue }`
             // doesn't guarantee closest rounding method
             // doesn't guarantee closest rounding method
-            if closest > 0 {
+            if closest > startIndex {
                 let distanceAfter = abs(self[closest].x - xValue)
                 let distanceAfter = abs(self[closest].x - xValue)
-                let distanceBefore = abs(self[closest-1].x - xValue)
-                distanceBefore < distanceAfter ? closest -= 1 : ()
+                let distanceBefore = abs(self[index(before: closest)].x - xValue)
+                if distanceBefore < distanceAfter
+                {
+                    closest = index(before: closest)
+                }
                 closestXValue = self[closest].x
                 closestXValue = self[closest].x
             }
             }
         }
         }