Mehrere Methoden namens "count" mit nicht übereinstimmendem Ergebnis, Parametertyp oder Attributen gefunden

8

Seit dem Update auf Xcode 5.1 kann ich mein Projekt nicht mehr archivieren. Xcode sagt immer "Mehrere Methoden namens" count "gefunden mit nicht übereinstimmenden Ergebnis, Parametertyp oder Attribute. Dieses Problem ist neu und Simulator und läuft auf dem Gerät funktioniert gut. Hier ist der Code:

%Vor%

Xcode zeigt den Fehler an diesem Punkt an: [JSON[@"data"][@"menu"][i][@"item"] count] JSON ist ein NSDictionary . Was ist daran falsch?

    
seniorbenelli 10.03.2014, 23:10
quelle

6 Antworten

15

Fragen Sie sich: Was ist der Typ von JSON [@ "Daten"] [@ "Menü"] [i] [@ "Element"]? Es ist "id". Der Compiler weiß nicht, auf welche Methode dieses Objekt reagiert. Sie senden eine "Anzahl" Nachricht. Der Compiler durchläuft alle Zählmethoden aller ihm bekannten Klassen. Wenn es mehr als zwei verschiedene gibt, muss es sich beschweren.

Sie könnten

schreiben %Vor%

Besser lesbar, einfacher zu verfolgen, schneller und einfacher zu debuggen.

Natürlich können Sie auch

schreiben %Vor%     
gnasher729 10.03.2014, 23:24
quelle
2

Da mehrere Cocoa-Klassen mit einer Methode namens count und objectForKeyedSubscript: (zu der JSON[@"data"][@"menu"][i][@"item"] aufgelöst wird) id zurückgibt, kann der Compiler nicht die Typchecking für die Nachricht send durchführen .

Um die Warnung zu stoppen, müssen Sie das Ergebnis von JSON[@"data"][@"menu"][i][@"item"] auf seine tatsächliche Klasse, z. B. (NSDictionary *)(JSON[@"data"][@"menu"][i][@"item"]) , umwandeln oder es in eine temporäre Variable einfügen: NSDictionary * itemDict = JSON[@"data"][@"menu"][i][@"item"];

    
Josh Caswell 10.03.2014 23:20
quelle
1

Versuchen:

%Vor%

Diese Hilfe?

    
Joey Clover 10.03.2014 23:13
quelle
1

Nur eine Besetzung wie:

float a = [[_myArray objectForKey:@"myKey"] count] / 5.0;

float a = [(NSArray *)[_myArray objectForKey:@"myKey"] count] / 5.0;

    
Mário Carvalho 16.09.2015 22:24
quelle
0

versuchen Sie mit so

%Vor%

Sie müssen übergeben

  

parseJSONArray

Typ von NSArray

    
masbog 28.05.2014 17:52
quelle
0

Falls Sie keinen Code wie diesen schreiben wollen [((NSArray *) aId)]:

%Vor%

Verwenden von arrayElementCount anstelle von 'count'

    
Pingan Yi 21.01.2015 04:35
quelle