不好意思的問題標題略顯模糊,但我發現很難直接在我的腦海中找到它。如何定義可以從兩個不同類初始化的變量?
這裏的問題是我有兩個不同的數據源,我可能會初始化和加載數據。取決於我需要的dataSource的數據更改。
我遇到的問題是如何定義該數據源的變量,當它可能來自兩個不同的類。
如果我在接口定義它們:
BColumnChartDataSource * chartDatasource = [[BColumnChartDataSource alloc] initWithExercise:_exercise];
BDoubleColumnChartDataSource * chartDatasource = [[BDoubleColumnChartDataSource alloc] initWithExercise:_exercise];
然後,它顯然不喜歡他們被稱爲同樣的事情。
如果我試圖把它們放在if語句然後他們不是可用的邏輯語句
if (_exercise.unitTypeLinks.count < 2) {
BColumnChartDataSource * chartDatasource = [[BColumnChartDataSource alloc] initWithExercise:_exercise];
}
else {
BDoubleColumnChartDataSource * chartDatasource = [[BDoubleColumnChartDataSource alloc] initWithExercise:_exercise];
}
最後,我想將它們放到這樣的語句之外,所以我可以if語句到把一個其中每一個,但它是一個非常詳細的方式,如果我添加更多的數據源可能需要更多的時間。
// Get the exercise event list for our clicked exercise
_exerciseEventList = [chartDatasource getExerciseEventList];
我想我必須在這裏失去了一些東西很明顯,所以,謝謝您的幫助,你可以給
'ID chartDatasource'好像這裏顯而易見的解決方案。不過,這取決於兩個類別的運作方式。 – farski
chartDatasources非常相似 - 只是對圖表稍作調整 - 如何在代碼中使用id ChartDatasource?只是把它放在頂部? –
BColumnChartDataSource和BDoubleColumnChartDataSource是2個類,具體取決於您需要從該類獲取信息的滿足程度(在許多控制器中您將得到這種情況),這是您的問題 –