0

Я собираюсь стать немного сумасшедшим для этого решения .. У меня есть TableView с его списка пункта (массив из CSV Парсинга), Мне нужно передать некоторые данные из этого массива в список Detail TableView, когда я выбираю ячейку.Ошибки при передаче данных от Tableview к деталям Tableview

Я использовал несколько решений, и я попробовал их, но это должно быть лучшим решением и кодом соответствует руководству. Но когда я выбираю ячейку, у меня есть «EXC_BAD_ACCESS», но я не могу понять, где находится объект зомби, поэтому я отправляю сообщение весь класс:

#import "inRaggioViewController.h" 
#import "iR-DetailViewController.h" 


@implementation inRaggioViewController 

@synthesize lista, record; 


- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSMutableArray *listaNonOrdinata = [[NSMutableArray alloc]init]; 
    self.navigationItem.title = @"Tipologia"; 

    NSString *fileString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Lista1" ofType:@"csv"] encoding:NSUTF8StringEncoding error:nil]; 
    record = [fileString csvRows]; 

    dettaglio = [[NSMutableArray alloc]init]; 
    id doppio = nil; 

    for (int i=1; i < record.count; i++) { 
     for (int j=0; j < listaNonOrdinata.count; j++) { 
      doppio = [[record objectAtIndex:i] firstObjectCommonWithArray:listaNonOrdinata]; 
      if (doppio == nil) { 
//    [dettaglio addObject:[NSNumber numberWithBool:NO]]; 
      } else { 
//    [dettaglio addObject:[NSNumber numberWithBool:YES]]; 
      } 
     } 
     if (doppio == nil) { 
      [listaNonOrdinata addObject:[[record objectAtIndex:i]objectAtIndex:0]]; 
     } 
    } 

    //Ordino array in ordine alfabetico 
    lista = [[NSArray alloc]init]; 
    lista = [listaNonOrdinata sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

    [listaNonOrdinata release]; 
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 1; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    return lista.count; 
} 


// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell... 
    NSString *cellValue = [lista objectAtIndex:indexPath.row]; 
    cell.textLabel.text = cellValue; 

// NSLog(@"dettaglio bool Value: %s",[[dettaglio objectAtIndex:indexPath.row]boolValue] ? @"YES" : @"NO"); 

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic may go here. Create and push another view controller. 
    NSLog(@"Selezionata riga %i",indexPath.row+1); 
     iR_DetailViewController *detailViewController = [[iR_DetailViewController alloc]init]; 
     // ... 
     // Pass the selected object to the new view controller. 
     detailViewController.navigationItem.title = [self.lista objectAtIndex:indexPath.row]; 
     [detailViewController.lista addObject:[[self.record objectAtIndex:indexPath.row+1]objectAtIndex:1]]; 
     [self.navigationController pushViewController:detailViewController animated:YES]; 
     [detailViewController release]; 
} 


#pragma mark - 
#pragma mark Memory management 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Relinquish ownership any cached data, images, etc. that aren't in use. 
} 

- (void)viewDidUnload { 
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. 
    // For example: self.myOutlet = nil; 
} 


- (void)dealloc { 
    [dettaglio release]; 
    [record release]; 
    [lista release]; 
    [super dealloc]; 
} 


@end 

Самое странное, что список объект прекрасно работают в других методах, только в методе выбора дает проблему ...

Извините за мой плохой английский, я не» Я хорошо говорю по-английски. Спасибо за консультацию!

Я РЕШЕН! Спасибо всем, проблема в том, что я должен сохранить перечислить и записать объекты в конце viewDidLoad!

ответ

0

Если список, который вы пытаетесь добавить, это NSArray, это не сработает. Вы можете добавить только к нему, если это NSMutableArray. Попробуй это?

+0

Список первого TableView был массивом, но также путем его превращения в NSMutableArray дает мне ту же ошибку. Должна быть другая проблема – Shafa95

Смежные вопросы