Domanda

Ho un problema con la visualizzazione della tabella in iphone .. non riesco a capire il motivo per cui si blocca ogni volta sarà qui è il codice

   - (void)viewDidLoad
{
     [self checkAndCreatePList];
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:pListPath];

    self.animals = [plistDict objectForKey:@"Animals"];



         [super viewDidLoad];

}



    -(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath
{
    static NSString *SimpleTableIdentifier =@"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if(cell== nil){
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier]autorelease];
    }
    NSUInteger row = [indexPath row];

    cell.textLabel.text = [animals objectAtIndex:row];

    return cell;
}

è crash alla linea cell.textLabel.text = [animali objectAtIndex: riga]; e mi dice che Chiusura di applicazione a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: '- [__ NSCFDictionary objectAtIndex:]: selettore non riconosciuto inviato ad esempio

È stato utile?

Soluzione

La chiave Animals nel plist si riferisce ad un dizionario, non è un array. I dizionari non hanno un ordine garantito, in modo da chiedere un oggetto a un determinato indice non ha senso.

In aggiunta a questo, si ha una perdita di memoria - plistDict viene allocata ma mai rilasciato. Hai eseguito l'analizzatore statico sopra il vostro codice?

Altri suggerimenti

[plistDict objectForKey:@"Animals"];

restituisce un dizionario non un array come vi aspettate. È necessario controllare il file plist per verificare se i dati sono corretti.

l'errore sembra che si sta chiamando objectAtIndex su un oggetto NSDictionary alla linea cell.textLabel.text = [animali objectAtIndex: riga]; controllare che cosa contiene animale in fase di esecuzione. Per questo uso NSLog prima di questa linea. NSLog (@ "% @", animali);

appare come animals qualche dictionary e si sta chiamando il metodo objectAtIndex: su di esso. objectAtIndex:. è il metodo NSArray

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top