Prüfen Sie, ob etwas existiert in einem NSMutableArray
Ich habe ein NSMutableArray, in denen mehrere Objekte. Ich möchte überprüfen, ob ein Objekt vorhanden ist, und wenn dem so ist, verändern. Ich Frage mich, über die es die Kontrolle. Ich dachte, das würde funktionieren:
if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) //do something
Jedoch, dieses zum Absturz bringen, wenn es nicht alle Teilobjekte bei index 1.
Also ich denke das problem ist, dass die oben genannten nicht zurück, nil, wenn es nicht etwas in diesem Index.
Gibt es eine andere einfache Möglichkeit zu überprüfen, oder werde ich zu rechnen haben, durch das array etc.? Ich weiß, es gibt andere Beiträge auf stackoverflow, aber ich habe nicht gefunden, eine einfache Antwort noch.
Irgendwelche Erklärungen /Vorschläge willkommen. Danke!
InformationsquelleAutor n.evermind | 2011-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht einfach überprüfen mit :
oder
Diese Methoden prüfen jedes Objekt mit
isEqual
.Zum Beispiel:
Jup
[myArray indexOfObject:myObject];
gibt Ihnen die positionverwenden
indexOfObject:
und überprüfen Sie das Ergebnis gleich sein wie der index, den Sie möchtenUpvoting. Anstehende Bearbeiten mit dem code-Beispiel. Hoffe du verzeihst mir @Vince!
kein problem ! Ich war über Bearbeiten mich. aber Sie sind zu schnell für mich 😉
InformationsquelleAutor
Ist dies ein Muster, das Sie verwenden, eine Menge, könnte man hinzufügen, eine Kategorie zu NSArray heißt so etwas wie
safeObjectAtIndex:
nimmt, die einen index hat die bounds checking intern:Genie!! Nette Idee. !! Funktioniert Prima.
InformationsquelleAutor smorgan
Vorausgesetzt, das Objekt, das Sie verwenden, um eine Suche mit und das eigentliche Objekt im array sind die exakt gleiche Instanz, und nicht zwei verschiedene Objekte, die sind gleich nach einer überschriebenen
isEqual:
- Methode, können Sie dies tun:Wenn die beiden Objekte unterschiedliche Instanzen, die gleich nach
isEqual:
, verwenden Sie code wie diesen:InformationsquelleAutor Mike Weller
NSArray (das ist die NSMUtableArray Oberklasse) hat viele Methoden für die Objekte zu finden. Haben Sie einen Blick auf die Dokumentation.
Können Sie entweder verlassen Sie sich auf die equals-Methode (z.B. indexOfObject:) oder block (e.g indexOfObjectPassingTest:) das ist ziemlich funky.
Es ist ziemlich Häufig in Objective-C zu verwenden, die die Veränderliche version einer Klasse, sondern verlassen sich auf Methoden, die in den nicht änderbaren Superklasse, so ist es immer eine gute Idee, wenn die überprüfung der online-Dokumentation zu betrachten der Superklasse.
InformationsquelleAutor brain