избегать автоматического освобождения массива NSMutable ..... приложения для iphone - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть NSmutablearray после того, как я прочитал данные из него, я не могу снова прочитать те же данные (индекс)

Ошибка: «EXC_BAD_ACCESS»

в интерфейсе

NSMutableArray *ticketList;


@property (nonatomic, retain) NSMutableArray *ticketList;

присвоение значения

self.ticketList = [NSMutableArray arrayWithArray:[results objectForKey:@"tickets"]];

чтение значения

      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"ticketCell";
    ticketCell *cell = (ticketCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];



    if (cell == nil) {

        [self.cellNib instantiateWithOwner:self options:nil];
        cell = tmpCell;
        self.tmpCell = nil;



    }
    else {
        // Nothing to do here. Because in either way we change the values of the cell later.
    }

    cell.useDarkBackground = (indexPath.row % 2 == 0);
        // Configure the data for the cell.
    int rowID = indexPath.row;

        NSDictionary *currentTicket = [ticketList objectAtIndex:(int)(indexPath.row)];
    NSString *tikid = [currentTicket objectForKey:@"number"];
        cell.ticketID = [currentTicket objectForKey:@"number"];
        cell.ticketStatus = [currentTicket objectForKey:@"status"];
        cell.ticketOpenDate = [currentTicket objectForKey:@"oDate"];
        cell.ticketEndDate = [currentTicket objectForKey:@"eDate"];
        cell.ticketCategory = [currentTicket objectForKey:@"category"];
        cell.ticketPriority = [currentTicket objectForKey:@"priority"];
        cell.ticketInfo = [currentTicket objectForKey:@"info"]; 
    return cell;
}

Ответы [ 3 ]

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

Вы должны правильно распределить массив:

ticketList = [[NSMutableArray alloc] initWithArray:[results objectForKey:@"tickets"]];

А также, возможно, попытаться выделить currentTicket:

NSDictionary *currentTicket = [[NSDictionary alloc] initWithDictionary:[ticketList objectAtIndex:indexPath.row]];
1 голос
/ 29 сентября 2011

Похоже, где-то вы делаете что-то вроде этого:

[currentTicket release];

Если так, не делайте.Указатель currentTicket не принадлежит вам.

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

используйте это

ticketList = [[NSMutableArray alloc]initWithArray:[results objectForKey:@"tickets"]];

вместо

self.ticketList = [NSMutableArray arrayWithArray:[results objectForKey:@"tickets"]];

используйте это

NSDictionary *currentTicket = [ticketList objectAtIndex:indexPath.row];

вместо

 NSDictionary *currentTicket = [ticketList objectAtIndex:(int)(indexPath.row)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...