NSArray zählt nicht

  • Ich habe also eine UITableView und fülle die Tabellenansicht mit Daten aus einer .plist. Dies hat bis heute gut funktioniert, als ich das Gleiche versuchte und ich die numberOfRowsInSection -Methode nicht zum Laufen bringen kann. Hier ist mein Code:

     - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
         if...
    
         else if (segmentOptions == exchange){
             NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];
             return [array count];
         }   
    
       //Else
        return contentArray.count;
    }
     

    Also in diesem Code stürzt der Code jedes Mal ab, wenn ich ihn ausführen. Aber ich benutze den gleichen Code, um den Tableview-Text zu setzen, und das funktioniert gut:

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
         static NSString *CellIdentifier = @"Cell";
    
         UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
             cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
         }
    
         if...
    
         else if (segmentOptions == exchange) {
               NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:indexPath.section]]];
               cell.textLabel.text =  [array objectAtIndex:indexPath.row];
         }
    
         return cell;
    }
     

    Und dieser Code funktioniert gut, weshalb ich so verwirrt bin. Wenn ich die Anzahl der Zeilen so eingestellt habe, dass sie zu einer bestimmten Anzahl zurückkehrt und den Rest des Codes ausführt, funktioniert alles einwandfrei. Also bin ich wirklich verloren. Vorab

    UPDATE Ich habe es mit der richtigen count -Notation return [array count]; versucht, und ich bekomme immer noch den gleichen Absturz und die gleiche Konsolenausgabe.

    23 November 2011
    Andrew
3 answers
  • Erstens ist count keine Eigenschaft, daher sollten Sie keine Punktsyntax verwenden, um darauf zuzugreifen.

    Ich würde vorschlagen, Ihren Code so zu ändern, dass Sie nicht darauf zugreifen Die count-Methode ähnelt einer Eigenschaft.

    Zweitens:

    Testen Sie, ob Ihr Array gleich Null ist und sogar ein Array ist

    Drittens,

    Buchen Sie den tatsächlichen vollständigen Stack-Trace.

    22 November 2011
    Marcus S. Zarra
  • Unterbrechen Sie die Fehlerbehebung und debuggen Sie, wenn die Konsolenmeldung nicht hilfreich ist. Es hilft manchmal, besonders wenn es spät ist. d. h.

     // NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];
    
    NSLog(@"%d", section);
    
    id objAtIndex = [listOfExchanges objectAtIndex:section];
    NSLog(@"%@", listOfExchanges);
    NSLog(@"%@", objAtIndex);
    
    id objForKey = [exchangeDictionary objectForKey:objAtIndex];
    NSLog(@"%@", exchangeDictionary);
    NSLog(@"%@", objForKey);
     
    22 November 2011
    Mustafaeugene
  • Versuchen Sie Folgendes:

     [array count]
     

    count ist keine Eigenschaft, sondern eine von Ihnen ausgeführte Methode im Array.

    22 November 2011
    nicholjs