从另一个类访问一个NSMutableArray
我有一个NSMutableArray
,我需要从另一个类访问它。这是我迄今为止所做的;从另一个类访问一个NSMutableArray
我宣布在
.h
文件NSMutableArray *muArr
,并@property(nonatomic, retain) NSMutableArray *muArr
。-
@synthasize muArr;
在.m
文件,最后填充它:[muArr addObject: @"First"];
现在
SecondView
我添加了import语句#import "FirstView.h"
写道:FirstView *frv = [[FirstView alloc]init];
然后NSLog(@"%i",[frv.muArr count]);
这些线的代码写在viewDidLoad
方法中。当打印NSLog
时,我得到0
记录而不是1
。
这是为什么?我做错了什么,有人可以给我看一个示例代码/教程?
您正在填充muArr
的didSelectRowAtIndexPath
,直到您选择一行后才会调用它。通过在您的FirstView上调用init
,您创建一个新的FirstView,然后立即检查muArr
的计数。计数为0,因为你没有选择任何行尚未..
就像这样,当我点击一行,'muArr'被填充,并且页面将被重定向到'FirstView',所以我需要访问'muArr'并且获得它的数量。 – Illep
你的意思是它被重定向到'SecondView'?你的步骤像(1)FirstView加载,(2)用户点击一行,(3)第二个视图加载,你需要检查FirstView数组的值。如果是这样的话,您需要将'FirstView'的引用传递给SecondView - 您正在使用'alloc'和'init'创建一个新的,不同的FirstView。 –
您需要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算
为什么我必须这样做,是不是直接访问'muArr'?如果'muArr'返回一个“0”的计数,'arrOfFirstView'不会返回'0'吗? – Illep
不,如何muArr将为零,因为您正在第一个视图中初始化和添加对象,并希望在第二个视图中使用。 –
你分配数组吗?在您添加项目,你必须与
myArr = [[NSMutableArray alloc] init];
分配它,如果你不这样做,将[ADDOBJECT]调用不会崩溃的程序,但不会有任何效果。数组的count
将永远保持为零。
@synthesize,与流行的看法相反,并没有分配伊娃。它只是生成一个getter方法,并且还可以在类中生成一个setter方法。
是的,我没有分配数组,然后只填充它的值 – Illep
你用哪种方法填充muArr(addObject:call是哪里)? –
我在'didSelectRowAtIndexPath'里写了它,所以当用户点击单元格/行时。这个方法被执行,'muArr'被填充。 – Illep
你有没有实际创建NSMutableArray?我没有看到有这样的说法。 –