NSMutableArray zählt immer Null zurück

7

Ich bin mir sicher, ich mache etwas Dummes, aber das macht mich verrückt.

Ich versuche, Datenbankergebnisse zu durchlaufen, Objekte aus diesen Ergebnissen zu erstellen und die Objekte einem NSMutableArray hinzuzufügen. Ich habe über NSLog-Aufrufe verifiziert, dass die Daten korrekt aus der Datenbank gelesen und in das Objekt kopiert werden, aber die Anzahl für NSMutableArray immer gibt 0 zurück.

Hier ist die Essenz des Codes:

%Vor%

Kana ist von NSObject abgeleitet, und Hiragana ist eine Instanz von NSMutableArray.

Ich bin mir sicher, dass das ein Anfängerfehler ist, und ich hoffe, dass mich jemand zurechtweisen kann. TIA! :)

    
John Biesnecker 11.03.2009, 08:09
quelle

3 Antworten

39

Nach dem von Ihnen geposteten Code ist es wahrscheinlich, dass Sie Ihr Array wahrscheinlich nicht richtig zuordnen. Wenn Sie Objekte erstellen, müssen Sie sie ebenfalls initialisieren. Deshalb:

%Vor%

Sollte sein:

%Vor%

Alle Objekte müssen auf diese Weise initialisiert werden. Wenn ich also richtig bin und Sie Ihr Array nicht initialisiert haben, muss Ihre Erstellung davon ausgehen:

%Vor%

dazu:

%Vor%

Aus Gründen der Optimierung sollten Sie wahrscheinlich auch eine Anfangskapazität angeben, wenn Sie eine Vorstellung davon haben, wie viele Objekte Sie halten könnten:

%Vor%     
Matt Ball 11.03.2009, 08:33
quelle
2

Eine andere häufige Ursache (nicht in Ihrem Fall, wie sich herausstellt, sondern generell) ist, das Array sogar zu reservieren. Wenn Sie noch kein Array erstellt haben, senden Sie diese Nachricht count an nil , sodass das Ergebnis immer 0 ist.

    
Peter Hosey 11.03.2009 10:00
quelle
0

Ein paar Dinge:

  1. Was passiert, wenn Sie einen NSLog-Aufruf in die while-Schleife einfügen? Stellen Sie sicher, dass die Schleifeniterationen tatsächlich ausgeführt werden, bevor Sie dem Array die Schuld geben.
  2. Wo erstellst du das Array Hiragana? Wenn Sie es aus irgendeinem Grund falsch tun und das Array ist Null, kann es Probleme wie diese verursachen.
  3. Wenn die Garbage Collection nicht aktiviert ist, sollten Sie [htemp release] nach dem Hinzufügen zur Schleife ausführen. addObject behält sich und jedes hinzugefügte Element wird aus der Schleife auslaufen. Dies ist wiederum nur relevant, wenn die Garbage Collection deaktiviert ist.

Es ist sehr wahrscheinlich, dass Sie das Array nicht korrekt erstellt haben oder rs nicht enthält, was Sie erwarten, und so wird [rs next] nicht immer aufgerufen (wenn rs null ist, z. B. no Iterationen dieser Schleife würden ausgeführt werden und Sie hätten keine Art von Fehler).

    
Joel Levin 11.03.2009 08:20
quelle

Tags und Links