Vergleicht man einen string in ein array in objective-C
hier ist eine sehr grundlegende Frage, dass ich bin sicher, Sie werden in der Lage sein, schnell zu beantworten. Bitte nicht lachen über meine Unwissenheit.
Ich habe einen string, den will ich vergleichen, um ein array von strings. Nur wenn der string ist nicht Teil der Reihe, ich möchte eine operation durchführen. Ich habe versucht den folgenden code, das nicht funktioniert. Ich verstehe warum, aber ich kann einfach nicht denken Sie an einen Weg, es zu tun korrekt.
Bitte hilf mir aus meinem Elend.
Vielen Dank im Voraus
Sjakelien
-(void) findRedundant: (NSString *) aString {
#define ALPHA_ARRAY [NSArray arrayWithObjects: @"A", @"B", @"C", nil]
NSUInteger f;
for (f = 0; f < [ALPHA_ARRAY count]; f++)
{
NSString * stringFromArray = [ALPHA_ARRAY objectAtIndex:f];
if ([aString isEqualToString:stringFromArray]) {
//do nothing
} else {
//do something
}
}
}
[self findRedundant:@"D"];
Könnte man hinzufügen, warum es nicht funktioniert auf die Frage?
InformationsquelleAutor Sjakelien | 2009-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code scheint zu funktionieren. Seine schrecklichen code, aber es funktioniert gut, die //nichts zu tun Abschnitt heißt für alle match-und die //etwas tun Abschnitt heißt für jeden Konflikt in der array. Ich vermute, das problem ist, dass Sie erwarten, dass die //nichts zu tun Abschnitt werden einmal ausgeführt, wenn keine übereinstimmung vorhanden ist, und //etwas tun Abschnitt einmal ausgeführt werden soll, wenn es irgendein Spiel, was nicht der Fall ist. Sie wollen wahrscheinlich:
Außerdem, Sie eindeutig nicht verstehen, Makros und wenn Sie sollten und Sie nicht benutzen sollten (im Allgemeinen sollten Sie nie verwenden, mit sehr wenigen Ausnahmen). Das makro ist textlich ersetzten in Ihrem code. Das bedeutet, dass die array-Erzeugung und Initialisierung geschieht jedes mal Sie verwenden ALPHA_ARRAY. Das ist schrecklich.
Grundsätzlich nie verwenden #define wieder (außer Konstanten), bis Sie haben ein viel tieferes Verständnis von dem, was du tust. In diesem Fall erstellen Sie das array als taebot beschrieben:
Nächsten, wenn Sie die Entwicklung einer modernen Plattform (10.5 oder ein iPhone), können Sie Schnell Enumeration, das ist viel einfacher und klarer zu Lesen:
Und schliesslich, sollten Sie, Lesen Sie die Dokumentation über die NSArray und NSString um zu sehen, was Sie kostenlos tun können, und dann finden Sie Methoden, wie Sie containsObject, dass KiwiBastard darauf hingewiesen, und Sie können schreiben Sie Ihre routine, wie:
InformationsquelleAutor Peter N Lewis
Ich bin mir nicht sicher, warum dein code oben nicht funktioniert, aber Sie haben versucht:
zurückgeben wird, JA, wenn aString vorhanden, sonst KEINE
auch wenn es von Ihrem Interesse ist, es funktioniert vergleichen von strings' equalness (isEqualToString) im Gegensatz zum Vergleich von Zeigern. Siehe stackoverflow.com/questions/5811121/...
InformationsquelleAutor JamesSugrue
Die #define-sieht seltsam für mich. Ich denke, dass jedes mal, wenn Sie ALPHA_ARRAY eine andere NSArray-Instanz erstellt werden. Es wäre cleaner zu verwenden, der containsObject: Methode auf NSArray:
InformationsquelleAutor teabot