如何使用另一个类中定义的数组中的值

时间:2013-02-19 15:15:55

标签: ios objective-c nsarray core-plot

我遵循John Wordsworth教程(http://www.johnwordsworth.com/2011/10/adding-charts-to-your-iphone-ipad-app-using-core-plot/)来生成CorePlot的折线图。

后来我决定从网站上获取一些JSON数据,以便我可以将它用于我的图表。

所有url连接方法都在我的ViewController.m文件中执行。在那里,我创建了一个名为indicator的NSArray,其中包含所有JSON数据。

我的问题是所有图形的参数都在一个名为SimpleScatterPlot.m的单独的NSObject类中定义,我想使用字符串数组“indicator”(在ViewController.m中定义)自定义x轴标签。

我需要做什么才能在SimpleScatterPlot.m中使用此JSON数据? 我试过了#import "ViewController.h",但没有解决它。

提前感谢你给我的任何指导。

3 个答案:

答案 0 :(得分:0)

不确定我是否正确理解它,但我认为你没有尝试从SimpleScatterView.m访问指标nsarray,而是设置ViewController.m中的值。

1)在SimpleScatterView.m中定义一个公共NSArray并合成它。

2)不要试图获取访问权限,而是使用ViewControler.m中的“prepareForSegue”在destinationSegueController中设置指标。

3)在SimpleScatterView.m中实现“ - (void)setIndicator:(NSArray *)指示器”并根据需要更新GUI。

虽然“模型 - 视图 - 控制器”范例建议不要使用ViewControllers来执行通信等,但这是针对另一个线程的。

答案 1 :(得分:0)

如果我没有错误地阅读您要执行的操作,我猜您可以在SimpleScatterView视图中正确使用UIViewController(假设SimpleScatterViewUIView实际上是SimpleScatterView)。

在这种情况下,当您的控制器下载了数据时,您可以实例化view并通过将其添加到视图控制器... <data has been downloaded> ... SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:...]; [self.view addSubview:scatterView]; 来显示它。

SimpleScatterView

初始化SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:... andData:(NSArray*)...]; 时,可以向它传递对数据数组的引用(例如,在其自定义init方法中,或使用属性)。 e.g:

scatterView.dataSet = <your_json_array>;

或:

getData

当然,你有很多这种设计的替代品。具体来说,我会提到:

  1. 使用模型类处理所有数据的可能性,以便控制器将数据写入模型,而绘图视图从中读取数据。在这种情况下,该模型可以通过单例实现,以便于访问;

  2. 为绘图视图使用“dataSource”的可能性:这需要在视图与其数据源之间定义协议(例如,{{1}}方法);您的视图控制器将扮演数据源的角色(换句话说,不是将数组传递到绘图视图,如上例所示,您将传递对控制器的引用,视图将访问其数据)。

答案 2 :(得分:0)

在Viewcontroller中创建一个属性并进行合成。然后将JSON数据传递给属性。

To access the array in SimpleScatterView.m:
    Viewcontroller *viewcontrol = [[ViewController alloc] init];
    You can then access the array by using viewcontrol.indicator.
    NSLog(@"%@",viewcontrol.indicator);