Доступ к NSMutableArray из другого класса - PullRequest
1 голос
/ 28 сентября 2011

У меня есть NSMutableArray, и мне нужно получить к нему доступ из другого класса.Это то, что я сделал до сих пор:

  1. Я объявил NSMutableArray *muArr в файле .h и @property(nonatomic, retain) NSMutableArray *muArr.

  2. @synthasize muArr; в файле .m и, наконец, заполнил его:

    [muArr addObject: @"First"];

  3. Теперь в SecondView я добавил оператор импорта #import "FirstView.h" иwrote: FirstView *frv = [[FirstView alloc]init]; затем NSLog(@"%i",[frv.muArr count]);

Эти строки кода написаны в методе viewDidLoad.и когда был напечатан NSLog, я получил 0 записей вместо 1.

Почему это так?что я сделал не так, и может кто-нибудь показать мне пример кода / учебник?

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Вы заполняете muArr в didSelectRowAtIndexPath, который не будет вызван, пока вы не выберете строку.Вызвав init в вашем FirstView, вы создаете новый FirstView, а затем сразу же проверяете счет muArr.Счетчик равен 0, потому что вы еще не выбрали ни одной строки ..

0 голосов
/ 28 сентября 2011

Вы выделяете массив?Прежде чем добавлять к нему элементы, вы должны выделить его с помощью

myArr = [[NSMutableArray alloc] init];

. Если вы этого не сделаете, вызов [addObject] не приведет к сбою программы, но не будет иметь никакого эффекта.И массив count останется нулевым навсегда.

@ синтез, вопреки распространенному мнению, не выделяет ивар.Он просто генерирует метод получения и, возможно, метод установки в классе.

0 голосов
/ 28 сентября 2011

Вам необходимо создать свойство (так же, как вы создаете muArr) в классе SecondView

Шаг 1): скажем, arrOfSecondView, и вы синтезируете его

Шаг 2) Теперь вы можете добавить свои данные muArr в arrOfSecondView

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

Шаг 3) Проверьте счетчик arrOfFirstView

...