2016-05-29 26 views
-1

數組stockPriceDate1..4在整個代碼中使用相同。在最後兩個條目上得到l值錯誤。這是我的名單標點符號,我錯了嗎?Swift - 表達式解析爲未使用的l值

func sChart(chart: ShinobiChart!, dataPointAtIndex dataIndex: Int, forSeriesAtIndex seriesIndex: Int) -> SChartData! { 
    return seriesIndex == 0 ? 
     stockPriceData1[dataIndex]: 
     stockPriceData2[dataIndex]; 
     stockPriceData3[dataIndex]; <- Expression resolves error... 
     stockPriceData4[dataIndex]  <- Expression resolves error... 
} 

回答

2

讓不同重寫代碼:

return seriesIndex == 0 ? stockPriceData1[dataIndex] : stockPriceData2[dataIndex] 

let _ = stockPriceData3[dataIndex] 
let _ = stockPriceData4[dataIndex] 

注意,返回值是stockPriceData1stockPriceData2stockPriceData3stockPriceData4中的下兩個下標會被忽略,因爲您沒有使用它們的結果。

該代碼絕對不會做你認爲它的作用。

如果您想要使用seriesIndex來獲取正確的數據數組,您希望使用switch(例如,

switch seriesIndex { 
    case 0: 
     return stockPriceData1[dataIndex] 
    case 1: 
     return stockPriceData2[dataIndex] 
    case 2: 
     return stockPriceData3[dataIndex] 
    case 3: 
     return stockPriceData4[dataIndex] 
    default: 
     return nil // should never happen 
} 

或使用數組:

let data = [stockPriceData1, stockPriceData2, stockPriceData3, stockPriceData4] 
return data[seriesIndex][dataIndex] 
+0

你在這兩方面正確的 - 許多感謝。 –