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.
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.
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:
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%Tags und Links objective-c xcode loops for-loop