I have a textfield that accepts numbers and I am trying to replace the 8th character in the string with a "."
if(self.txtQty.text.length >= 8){
NSRange range = NSMakeRange(8,1);
self.txtQty.text = [self.txtQty.text stringByReplacingCharactersInRange:range withString:@"."];
}
-Example-
1234567.90
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString replaceCharactersInRange:withString:]: Range or index out of bounds' *** First throw call stack:
I keep receiving this error.
The range
{8,1}means you are trying to access the 9th character. But yourifcheck only verifies if the string has 8 or more characters. So if the string is exactly 8 characters long then you will get that error.Update your
ifcheck to:Or possibly your
ifcheck is correct and the range should be changed from{8,1}, to{7,1}to replace the 8th character.Which of those two changes you make depends on your goal (to change the 8th or 9th character).
To help visualize the range, I'll attempt a bit of a drawing:
Some string, its indexes, and range
{8,1}:Here you can see that the range
{8,1}is getting the 9th character.