Objective-C NSString für eine Schleife mit characterAtIndex

8

Ich versuche, NSString Zeichen für Zeichen zu durchlaufen, aber ich erhalte einen Fehler EXC_BAD_ACCESS. Hast du eine Idee wie man das richtig macht? Ich habe jetzt stundenlang gegoogelt, kann es aber nicht herausfinden.

Hier ist mein Code (.m):

%Vor%

Vielen Dank!

    
Linus 25.04.2012, 12:17
quelle

4 Antworten

28

Zeichen sind kein Objekt. characterAtIndex gibt unichar zurück, was tatsächlich ein ganzzahliger Typ unsigned short ist. Sie müssen %C anstelle von %@ in NSLog verwenden. Auch ist das Zeichen kein NSString , also kannst du es nicht isEqualToString senden. Sie müssen ch == '.' verwenden, um ch mit '.' zu vergleichen.

%Vor%

Beachten Sie, dass 'a' ein Zeichen, "a" eine C-Zeichenfolge und @"a" NSString ist. Sie sind alle verschiedene Arten.

Wenn Sie %@ mit unichar ch in NSLog verwenden, wird versucht, ein Objekt vom Speicherort ch zu drucken, das ungültig ist. So erhalten Sie eine EXC_BAD_ACCESS.

    
taskinoor 25.04.2012, 12:23
quelle
4

characterAtIndex: gibt unichar zurück, also sollten Sie NSLog(@"%C", ...) anstelle von @"%@" verwenden.

Sie können auch isEqualToString nicht für unichar verwenden, verwenden Sie einfach == '.' ist in Ordnung.

Wenn Sie die Position aller '.'s finden möchten, können Sie rangeOfString verwenden. Siehe:

Hailei 25.04.2012 12:22
quelle
0

characterAtIndex: gibt eine unichar zurück, die als typedef unsigned short unichar; deklariert wird. Der Formatbezeichner, den Sie in Ihren Aufrufen von NSLog verwenden, ist falsch. Sie könnten einfach NSLog(@"%u",[self.text characterAtIndex:position]); oder NSLog(@"%C",[self.text characterAtIndex:position]); eingeben, wenn Sie möchten aktuelles Zeichen zum Ausdrucken.

Auch wenn unichar so definiert ist, wie es ist, handelt es sich nicht um eine Zeichenkette. Sie können sie also nicht mit anderen Zeichenketten vergleichen. Versuchen Sie etwas wie:

%Vor%     
willbur1984 25.04.2012 12:27
quelle
0

Wenn Sie den Ort eines Zeichens in einem String finden möchten, können Sie dies verwenden:

%Vor%

Wenn das Zeichen oder der Text nicht gefunden wird, erhalten Sie NSNotFound:

%Vor%     
Lefteris 25.04.2012 12:28
quelle

Tags und Links