NSCFSet objectAtIndex Unbekannter Selektor, Iterieren Werke
-
06-07-2019 - |
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
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?