Frage

Ich habe ein Problem mit der Tabellenansicht im iPhone. Ich kann nicht herausfinden

   - (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;
}

Es stürzt in der Zeilenzelle ab. und erzählt mir, dass die App aufgrund der ungekordenen Ausnahme 'nsinvalidargumentException', Reason: '-[__ NSCFDictionary ObjectatIndex:]: Nicht anerkannter Selektor gesendet an die Instanz gesendet werden

War es hilfreich?

Lösung

Das Animals Der Schlüssel in Ihrem Plan bezieht sich auf ein Wörterbuch, nicht auf ein Array. Wörterbücher haben keine garantierte Reihenfolge. Wenn Sie also nach einem Objekt in einem bestimmten Index fragen, ist dies nicht sinnvoll.

Darüber hinaus haben Sie ein Speicherleck - plistDict wird zugewiesen, aber nie freigelassen. Haben Sie den statischen Analysator über Ihren Code ausgeführt?

Andere Tipps

[plistDict objectForKey:@"Animals"];

Gibt ein Wörterbuch nicht ein Array zurück, wie Sie es erwarten. Sie müssen Ihre Plist -Datei überprüfen, um festzustellen, ob die Daten korrekt sind.

Der Fehler scheint, dass Sie aufrufen objectAtIndex auf einem nsdictionary -Objekt an der Zeilenzelle Überprüfen Sie, was Tier zur Laufzeit enthält. Verwenden Sie NSLog vor dieser Zeile. Nslog (@"%@", Tiere);

Sieht aus wie animals ist einige dictionary Und du rufst an objectAtIndex: Methode darauf. objectAtIndex: ist NSArray Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top