Frage

ich mein iPhone app gegen OS 3.0 und ich bekomme einen Compiler-Fehler compileing gerade versucht, wenn eine schnelle Auszählung mit.

Ich versuche, durch eine NSArray enthält cComment Klassen zu gehen:

for (cComment* newComment in comments.comments)

Und ich bekomme diese Fehlermeldung

Fehler:. Art von Accessor nicht die Art der Immobilie überein ‚Kommentare‘

Das funktioniert einwandfrei, wenn sie mit O 2.2.1 zusammengestellt.

ich den Fehler zu verstehen, wird die enumaretion nicht stark typisiert, aber da soweit ich weiß Generika / templates nicht in Objective-C unterstützt. Also zur Zeit kann ich nur einen Weg, um dies sehen:

for (id commentObject in comments.comments)
{
     cComment *newComment = (cComment *)commentObject;
}

Kann jemand denken Sie an eine andere Art und Weise? Warum hat sich das geändert? Alle Punkte auf Apfel-Dokumentation zu dieser Änderung würde geschätzt.

EDIT

Nach Grouchal Vorschlag, den ich dies versucht:     NSArray * allComments = comments.comments und ich habe den gleichen Fehler, damit es seine nicht um die Aufzählung schließlich scheint

Hier ist der Code Form der Header-Datei:

NSMutableArray * Kommentare;

@property (nur lesbar, nonatomic) NSArray * Kommentare;

und die Eigenschaft wird in der Implementierungsdatei synthetisiert.

Ändern der Eigenschaft auf NSMutableArray scheint das Problem zu lösen, aber ich sehe keinen Grund, warum dies der Fall sein sollte. Irgendwelche Ideen.

Danke.

War es hilfreich?

Lösung 3

Ich werde diese Frage schließen und ein neues unter Objective-C Änderungen für iPhone OS 3.0 fragen.

Ich implementierte die Getter-Methode selbst eine NSArray zurückzukehren und es funktioniert gut. Auch die Änderung der Eigenschaft auf NSMutableArray funktioniert, aber es ist wirklich nicht das, was ich tun möchte.

Ich habe keine Ahnung, warum dies geändert. Das ist eine Ziel-c Veränderung und kein O ändern. Auch gibt es keine Erwähnung in der Dokumentation von Änderungen zwischen 2.2 API 3.0 API.

Danke an alle für die Beantwortung.

Andere Tipps

Das Problem ist in der Eigenschaftsdefinition. Sie sollten ändern Sie es so:

@property (readonly,nonatomic) NSMutableArray* comments

Auf der anderen Seite, Sie Array wird als wandelbar ausgesetzt sein (obwohl ich vermute, das ist, was man verhindern wollte).

Ich sehe keinen Grund, warum dieser Code sollte 3.0 Ich habe einen ähnlichen Code arbeiten bereits nicht OS in Arbeit.

Was passiert, wenn Sie den Code

ändern
NSArray *commentArray = comments.comments;
for (cComment *newComment in commentArray){
.....
}

Ich habe gerade bemerkt, als ich das geschrieben habe, wo die * im Code ist - das ist das Problem? sollte es wirklich cComment * in der für Erklärung sein?

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