This question is locked. New answers and comments are not allowed.
Hi,
We are evaluating Shinobi and Telerik for our upcoming IOS Dashboard app. I am trying to build a sample graph and am able to generate using Shinobi. But when I am trying to use Telerik chart, I am getting following error.
2014-11-24 10:02:01.237 CFOInfo[929:262175] Calling method which should be implemented in subclasses! Please FIX!
2014-11-24 10:02:01.238 CFOInfo[929:262175] Calling method which should be implemented in subclasses! Please FIX!
Following is my sample code of the view controller.
import UIKit
class VCReportData : UIViewController, APIReportDataControllerProtocol {
var strReportName: String?
let kReportFormat: String = "JSON"
var metaDataInfo : [ModelMetaData] = [ModelMetaData]()
var reportDataInfo: [ModelReportData] = [ModelReportData]()
var chartView: UIView!
var api : APIReportDataController?
@IBOutlet weak var labelReportName: UILabel!
var chart = TKChart()
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
api = APIReportDataController(delegate : self)
api?.getReportData(strReportName: strReportName!, strReportFormat: kReportFormat)
labelReportName.text = strReportName!
}
func didReceiveAPIResults(results : NSDictionary) {
var results : NSDictionary = results
let dataSet : NSDictionary = results["dataset"] as NSDictionary
let metaData : NSDictionary = dataSet["metadata"] as NSDictionary
let metaDataItems : NSArray = metaData["item"] as NSArray
let arrayItems : Array<NSDictionary> = metaDataItems as Array<NSDictionary>
for metaItem in arrayItems {
var m1 = ModelMetaData()
m1.strName = metaItem["@name"] as String
m1.strType = metaItem["@type"] as String
m1.strLength = metaItem["@length"] as String!
m1.strPrecision = metaItem["@precision"] as String!
metaDataInfo.append(m1)
}
let reportData: NSDictionary = dataSet["data"] as NSDictionary
let reportDataRow: NSArray = reportData["row"] as NSArray
let arrayValues : Array<NSDictionary> = reportDataRow as Array<NSDictionary>
for rowItem in arrayValues {
var rd1 = ModelReportData(strReportData:rowItem["value"] as NSArray)
reportDataInfo.append(rd1)
}
dispatch_async(dispatch_get_main_queue(), {
//self.drawShinobiChart()
self.drawTelerikChart()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
})
}
func drawTelerikChart() {
chartView = UIView(frame: CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.width, self.view.bounds.height))
chart = TKChart(frame: CGRectInset(chartView.bounds, 15, 15))
chart.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
chartView.addSubview(chart)
let xAxis = TKChartAxis()
xAxis.position = TKChartAxisPosition.Bottom
chart.addAxis(xAxis)
let yAxis1 = TKChartNumericAxis()
yAxis1.majorTickInterval = 500_000
yAxis1.position = TKChartAxisPosition.Left
yAxis1.style.lineHidden = false
chart.addAxis(yAxis1)
var budgetData = [TKChartDataPoint]()
for i in 0..<reportDataInfo.count {
budgetData.append(TKChartDataPoint(x: reportDataInfo[i].strReportData[0], y: reportDataInfo[i].strReportData[1]))
}
let series = TKChartColumnSeries(items: budgetData)
series.xAxis = xAxis
series.yAxis = yAxis1
chart.addSeries(series)
}
}
We are evaluating Shinobi and Telerik for our upcoming IOS Dashboard app. I am trying to build a sample graph and am able to generate using Shinobi. But when I am trying to use Telerik chart, I am getting following error.
2014-11-24 10:02:01.237 CFOInfo[929:262175] Calling method which should be implemented in subclasses! Please FIX!
2014-11-24 10:02:01.238 CFOInfo[929:262175] Calling method which should be implemented in subclasses! Please FIX!
Following is my sample code of the view controller.
import UIKit<br><br>class VCReportData : UIViewController, APIReportDataControllerProtocol {<br> var strReportName: String?<br> let kReportFormat: String = "JSON"<br> var metaDataInfo : [ModelMetaData] = [ModelMetaData]()<br> var reportDataInfo: [ModelReportData] = [ModelReportData]()<br> var chartView: UIView!<br><br> var api : APIReportDataController?<br><br> @IBOutlet weak var labelReportName: UILabel!<br> var chart = TKChart()<br><br> required init(coder aDecoder: NSCoder) {<br> super.init(coder: aDecoder)<br> }<br> <br> override func viewDidLoad() {<br> super.viewDidLoad()<br> api = APIReportDataController(delegate : self)<br> api?.getReportData(strReportName: strReportName!, strReportFormat: kReportFormat)<br> labelReportName.text = strReportName!<br> <br><br> }<br><br> func didReceiveAPIResults(results : NSDictionary) {<br> var results : NSDictionary = results<br> let dataSet : NSDictionary = results["dataset"] as NSDictionary<br> let metaData : NSDictionary = dataSet["metadata"] as NSDictionary<br> let metaDataItems : NSArray = metaData["item"] as NSArray<br> let arrayItems : Array<NSDictionary> = metaDataItems as Array<NSDictionary><br> for metaItem in arrayItems {<br> var m1 = ModelMetaData()<br> m1.strName = metaItem["@name"] as String<br> m1.strType = metaItem["@type"] as String<br> m1.strLength = metaItem["@length"] as String!<br> m1.strPrecision = metaItem["@precision"] as String!<br> metaDataInfo.append(m1)<br> }<br> let reportData: NSDictionary = dataSet["data"] as NSDictionary<br> let reportDataRow: NSArray = reportData["row"] as NSArray<br> let arrayValues : Array<NSDictionary> = reportDataRow as Array<NSDictionary><br> for rowItem in arrayValues {<br> var rd1 = ModelReportData(strReportData:rowItem["value"] as NSArray)<br> reportDataInfo.append(rd1)<br> }<br> dispatch_async(dispatch_get_main_queue(), {<br> //self.drawShinobiChart()<br> self.drawTelerikChart()<br> UIApplication.sharedApplication().networkActivityIndicatorVisible = false<br> })<br> }<br><br> <br> func drawTelerikChart() {<br> chartView = UIView(frame: CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.width, self.view.bounds.height))<br> chart = TKChart(frame: CGRectInset(chartView.bounds, 15, 15))<br> chart.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight<br> chartView.addSubview(chart)<br><br> let xAxis = TKChartAxis()<br> xAxis.position = TKChartAxisPosition.Bottom<br> chart.addAxis(xAxis)<br><br> let yAxis1 = TKChartNumericAxis()<br> yAxis1.majorTickInterval = 500_000<br> yAxis1.position = TKChartAxisPosition.Left<br> yAxis1.style.lineHidden = false<br> chart.addAxis(yAxis1)<br><br><br> var budgetData = [TKChartDataPoint]()<br> for i in 0..<reportDataInfo.count {<br> budgetData.append(TKChartDataPoint(x: reportDataInfo[i].strReportData[0], y: reportDataInfo[i].strReportData[1]))<br> }<br><br> let series = TKChartColumnSeries(items: budgetData)<br> series.xAxis = xAxis<br> series.yAxis = yAxis1<br> chart.addSeries(series)<br> }<br>}<br>import UIKit
class VCReportData : UIViewController, APIReportDataControllerProtocol {
var strReportName: String?
let kReportFormat: String = "JSON"
var metaDataInfo : [ModelMetaData] = [ModelMetaData]()
var reportDataInfo: [ModelReportData] = [ModelReportData]()
var chartView: UIView!
var api : APIReportDataController?
@IBOutlet weak var labelReportName: UILabel!
var chart = TKChart()
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
api = APIReportDataController(delegate : self)
api?.getReportData(strReportName: strReportName!, strReportFormat: kReportFormat)
labelReportName.text = strReportName!
}
func didReceiveAPIResults(results : NSDictionary) {
var results : NSDictionary = results
let dataSet : NSDictionary = results["dataset"] as NSDictionary
let metaData : NSDictionary = dataSet["metadata"] as NSDictionary
let metaDataItems : NSArray = metaData["item"] as NSArray
let arrayItems : Array<NSDictionary> = metaDataItems as Array<NSDictionary>
for metaItem in arrayItems {
var m1 = ModelMetaData()
m1.strName = metaItem["@name"] as String
m1.strType = metaItem["@type"] as String
m1.strLength = metaItem["@length"] as String!
m1.strPrecision = metaItem["@precision"] as String!
metaDataInfo.append(m1)
}
let reportData: NSDictionary = dataSet["data"] as NSDictionary
let reportDataRow: NSArray = reportData["row"] as NSArray
let arrayValues : Array<NSDictionary> = reportDataRow as Array<NSDictionary>
for rowItem in arrayValues {
var rd1 = ModelReportData(strReportData:rowItem["value"] as NSArray)
reportDataInfo.append(rd1)
}
dispatch_async(dispatch_get_main_queue(), {
//self.drawShinobiChart()
self.drawTelerikChart()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
})
}
func drawTelerikChart() {
chartView = UIView(frame: CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.width, self.view.bounds.height))
chart = TKChart(frame: CGRectInset(chartView.bounds, 15, 15))
chart.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
chartView.addSubview(chart)
let xAxis = TKChartAxis()
xAxis.position = TKChartAxisPosition.Bottom
chart.addAxis(xAxis)
let yAxis1 = TKChartNumericAxis()
yAxis1.majorTickInterval = 500_000
yAxis1.position = TKChartAxisPosition.Left
yAxis1.style.lineHidden = false
chart.addAxis(yAxis1)
var budgetData = [TKChartDataPoint]()
for i in 0..<reportDataInfo.count {
budgetData.append(TKChartDataPoint(x: reportDataInfo[i].strReportData[0], y: reportDataInfo[i].strReportData[1]))
}
let series = TKChartColumnSeries(items: budgetData)
series.xAxis = xAxis
series.yAxis = yAxis1
chart.addSeries(series)
}
}