Objective-C NSString for loop with characterAtIndex

后端 未结 4 697
逝去的感伤
逝去的感伤 2021-02-04 16:46

I\'m trying to loop through a NSString, character by character, but I\'m getting a EXC_BAD_ACCESS error. Do you have an idea how to do this right? I\'ve been googling for hours

4条回答
  •  灰色年华
    2021-02-04 17:33

    Characters are not object. characterAtIndex returns unichar, which is actually an integer type unsigned short. You need to use %C instead of %@ in NSLog. Also character is not a NSString, so you can't send it isEqualToString. You need to use ch == '.' to compare ch against '.'.

    unichar ch = [self.text characterAtIndex:position];
    NSLog(@"%C", ch);
    
    if (ch == '.') {} // single quotes around dot, not double quotes
    

    Note that, 'a' is character, "a" is C string and @"a" is NSString. They all are different types.

    When you are using %@ with unichar ch in NSLog, it is trying to print an object from memory location ch which is invalid. Thus you are getting a EXC_BAD_ACCESS.

提交回复
热议问题