Frage

Ich habe mich gefragt, wie es sein kann, durch eine NSMutableArray, dass Iterieren funktioniert, aber wenn ich rufe objectAtIndex es nicht mit „*** - [NSCFSet objectAtIndex:]: Unbekannter Selektor zum Beispiel 0x gesendet ...“

Hier ist ein Beispielcode, das Programm ist zu groß, ganz zu teilen, so hoffe ich, es ist genug. Der Code wird in der neuesten iPhone Simulator von XCode ausgeführt.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 RDLogString(@"Creating cell @ row no. %d", indexPath.row);
 CPPlayerAppDelegate * appDelegate = [[UIApplication sharedApplication] delegate];
 RDLogString(@"Conversations: %p. Item count: %d", appDelegate.distribution.conversations, appDelegate.distribution.conversations.count);  
 //This works  
 for(CPConversation * x in appDelegate.distribution.conversations){
  RDLogString(@"Pointer: %p with name %@", x, x.name);
 }  
 //This fails with aforementioned error  
 CPConversation * conversationAtCurrentIndex = [appDelegate.distribution.conversations objectAtIndex: indexPath.row];

Sorry für die schlechte Formatierung, noch es heraus herauszufinden. :)

Vielen Dank im Voraus, Nick

War es hilfreich?

Lösung

objectAtIndex: Teil NSArray ist, nicht NSSet. Dies bedeutet, dass Ihr appDelegate.distribution.conversations kehrt ein NSSet und Sie benötigen einen NSArray.

Andere Tipps

Diese Ausnahme Meldung wird Ihnen sagen, dass Sie eine Nachricht mit einem Wähler sind zu senden, dass der Empfang Klasse nicht erkennt oder zu antworten. In diesem Fall sind die Senden Sie eine objectAtIndex: Nachricht an ein Objekt vom Typ NSCFSet (oder nur NSSet).

Das bedeutet, dass alles, was appDelegate.distribution.conversations ist, Sie erwarten es eine NSArray, aber es ist eigentlich ein NSSet zu sein. Wie schaffen Sie das Objekt zugegriffen da?

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