Количество NSMutableArray 0 после добавления объекта - PullRequest
0 голосов
/ 01 июня 2011

привет У меня есть объект (objectA) с переменными экземпляра буксировки, NSString и NSDate. и у меня есть два других объекта один с tableView и кнопкой добавления (objectB) и один представлен модально, когда вы нажимаете кнопку добавления (objectC), и в этом представлении объекта вы можете ввести имя и дату, и когда этот объект (objectC) был закрыт, я создаю новый объект (objectA) с именем и датой.

objectB имеет NSMutableArray, и я хочу добавить objectA в этот массив, чтобы он мог появиться в tableView, и я делаю это так в objectC.m

- (IBAction)saveButtonPressed {
   objectA *a = [[objectA alloc] init];
   [a setName:[myUITextField text]];
   [a setDate:[myDatePicker date]];

   objectB *b = [[objectB alloc] init];
   [[b myMutableArray] addObject:a]];
   [[b myMutableArray] count]; // count == 1 here but when i go back to objectB implementation it will be 0

}

и приложение вылетает здесь

есть идеи?

спасибо,

редактирование: крах закончился, я просто отредактировал метод init для objectA но myMutableArray по-прежнему 0

в объекте B.m

- (id)initWithStyle:(UITableViewStyle)style {
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

        UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                             target:self 
                                                                             action:@selector(addBarButton:)];
        [navItem setRightBarButtonItem:bbi];
        [bbi release];

        myMutableArray = [[NSMutableArray alloc] init];
    }
    return self;
}

- (void)addBarButton:(id)sender {
    myObjectC = [[objectC alloc] init];
    [self presentModalViewController:myObjectC animated:YES];

}

У меня также есть в objectB.h

@property (nonatomic, retain) NSMutableArray *myMutableArray;

счетчик myMutableArray в objectC в методе saveButtonPressed теперь равен 1 но когда я возвращаюсь к objectB tableView, где я хочу отобразить myMutableArray по-прежнему 0

Edit2: после того, как я положил много NSLog я обнаружил, что когда я создаю новый objectB в saveButtonPressed: метод, счетчик myMutableArray будет 1 но когда я возвращаюсь к своему tableView (objectB) myMutableArray возвращается к 0 возможно, потому что я создаю новый и отдельный объект objectB в objectC (saveButtonPressed :) также если я не выделяю и не инициирую objectB в saveButtonPressed: метод objectB будет ноль, и я не могу поместить objectA в myMutableArray

так что я думаю, мне нужно получить указатель на оригинальный объектB, но как?

1 Ответ

4 голосов
/ 02 июня 2011

Так как count == 0 после того, как вы добавили объект, я предполагаю, что это одна из двух вещей:

  1. [b myMutableArray] возвращает nil, потому что вы забыли выделить myMutableArray в функции init для объекта B (например, myMutableArray = [[NSMutableArray alloc] initWithCapacity:10];)

  2. [b myMutableArray] возвращает новый изменяемый массив каждый раз, когда он вызывается. Возможно, вы делаете что-то вроде:

- (NSMutableArray *)myMutableArray {
  return [NSMutableArray arrayWithCapacity:10];
}

Похоже, что (1), вероятно, является вероятной причиной, но все еще не объясняет сбой. Какие сообщения об ошибках вы видите в консоли отладки, когда происходит сбой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...