2011-09-28 207 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