在另一个类中访问NSMutableArray

时间:2014-03-07 16:08:47

标签: ios objective-c arrays

我可以看到有很多关于此的问题,但是他们似乎都没有给我解释为什么我无法从另一个班级访问我的数组。

这是我不想访问阵列的地方 (XYZPaymentViewController.m)

- (void)viewDidLoad
{
    [super viewDidLoad];

    XYZMateOverviewViewController *test = [[XYZMateOverviewViewController alloc] init];
    NSMutableArray *t = test.mates;
    NSLog(@"Count of ThatArray: %d", [t count]);
}

Nomatter是什么 - 日志写出0 !!

在另一个类(XYZMateOverviewViewController.h)中,我声明了数组

@property (retain) NSMutableArray *mates;

我在XYZMateOverviewViewController.m

的实现区域中合成了数组
@synthesize mates;

我希望你能帮助我理解我做错了什么:)

4 个答案:

答案 0 :(得分:1)

您在XYZMateOverviewViewController init方法中使用mates数组做什么?

如果您没有向其添加任何数据,则计数为0恰好。

答案 1 :(得分:1)

使用

XYZMateOverviewViewController *test = [[XYZMateOverviewViewController alloc] init];

您正在创建XYZMateOverviewViewController的全新实例,该实例与您的应用程序的任何其他部分无关*。你应该做的是获取对已经设置的视图控制器实例的引用。该实例可能已将mates属性设置为您想要的数据。

应用程序的不同部分之间以及不同视图控制器之间共享数据的一般主题应该在任何“iOS编程入门”一书或教程的开头部分介绍。


*当然,除非你在单身或共享状态下做一些时髦的事情,但我怀疑是这种情况。

答案 2 :(得分:1)

如果要从另一个ViewController访问数组,则必须在ViewControllers之间传递数组。

例如:

您有两个ViewControllers。 'A'和'B',所以你必须这样做:

在'A'ViewController中,您可以将阵列发送到另一个ViewController。然后创建一个'B'ViewController的实例并将数组发送给他:

代码'A'ViewController:

NSMutableArray *arrayToSend = [[NSMutableArray alloc]init];

    BViewController *bViewController = [[BViewController alloc]initWithNibName:@"BViewController" bundle:nil];

    BViewController.arrayReceived = arrayToSend;

[self.view addSubView:BViewController.view];

之后,在你的BViewController中,你只需要使用你的arrayReceived并使用它。

代码'B'ViewController:

NSLog(@"%@", [arrayReceived objectAtIndex:0]); // For example.

希望我能帮助你,如果你有任何疑问告诉我。

答案 3 :(得分:0)

你是否在init方法中分配/初始化可变数组?