2011-09-28 161 views
1

我有一个NSMutableArray,我需要从另一个类访问它。这是我迄今为止所做的;从另一个类访问一个NSMutableArray

  1. 我宣布在.h文件NSMutableArray *muArr,并@property(nonatomic, retain) NSMutableArray *muArr

  2. @synthasize muArr;.m文件,最后填充它:

    [muArr addObject: @"First"];

  3. 现在SecondView我添加了import语句#import "FirstView.h"写道:FirstView *frv = [[FirstView alloc]init];然后NSLog(@"%i",[frv.muArr count]);

这些线的代码写在viewDidLoad方法中。当打印NSLog时,我得到0记录而不是1

这是为什么?我做错了什么,有人可以给我看一个示例代码/教程?

+0

你用哪种方法填充muArr(addObject:call是哪里)? –

+0

我在'didSelectRowAtIndexPath'里写了它,所以当用户点击单元格/行时。这个方法被执行,'muArr'被填充。 – Illep

+1

你有没有实际创建NSMutableArray?我没有看到有这样的说法。 –

回答

1

您正在填充muArrdidSelectRowAtIndexPath,直到您选择一行后才会调用它。通过在您的FirstView上调用init,您创建一个新的FirstView,然后立即检查muArr的计数。计数为0,因为你没有选择任何行尚未..

+0

就像这样,当我点击一行,'muArr'被填充,并且页面将被重定向到'FirstView',所以我需要访问'muArr'并且获得它的数量。 – Illep

+0

你的意思是它被重定向到'SecondView'?你的步骤像(1)FirstView加载,(2)用户点击一行,(3)第二个视图加载,你需要检查FirstView数组的值。如果是这样的话,您需要将'FirstView'的引用传递给SecondView - 您正在使用'alloc'和'init'创建一个新的,不同的FirstView。 –

0

您需要SecondView类(如创建muArr以同样的方式)

第1步创建一个属性):比方说arrOfSecondView你合成它

步骤2)现在,你可以添加你muArr数据arrOfSecondView

SecondView *secondView = [[SecondView alloc]init]; 
    secondView .arrOfFirstView = muArr; 
    //and i guess you are pushing to secondView controller 

步骤3)检查arrOfFirstView算

+0

为什么我必须这样做,是不是直接访问'muArr'?如果'muArr'返回一个“0”的计数,'arrOfFirstView'不会返回'0'吗? – Illep

+0

不,如何muArr将为零,因为您正在第一个视图中初始化和添加对象,并希望在第二个视图中使用。 –

0

你分配数组吗?在您添加项目,你必须与

myArr = [[NSMutableArray alloc] init]; 

分配它,如果你不这样做,将[ADDOBJECT]调用不会崩溃的程序,但不会有任何效果。数组的count将永远保持为零。

@synthesize,与流行的看法相反,并没有分配伊娃。它只是生成一个getter方法,并且还可以在类中生成一个setter方法。

+0

是的,我没有分配数组,然后只填充它的值 – Illep