sorry but i’m still struggling to make this code working. It works if with a 2 digits number but it crashes with a single digit number. How can I verify if the NSString *secDigit has a value or is null. I hope my question is clear. Thanks in advance.
NSString *depositOverTotalRwy = [NSString stringWithFormat:@"%@", [deposit text]];
NSArray *components = [depositOverTotalRwy
componentsSeparatedByString:@"/"];
NSString *firstThird = [components objectAtIndex:0];
char firstChar = [firstThird characterAtIndex:0];
char secChar = [firstThird characterAtIndex:1];
NSString *firstDigit = [NSString stringWithFormat:@"%c",firstChar];
NSString *secDigit = [NSString stringWithFormat:@"%c", secChar];
NSLog(@" i'm %@", firstDigit);
NSLog(@" i'm %@", secDigit);
if ([firstDigit isEqualToString: @"1"]) {
firstDigit=@"wet";
NSLog(@"wet");
}
if ([firstDigit isEqualToString: @"2"]) {
firstDigit=@"wet";
NSLog(@"snow");
}
if ([firstDigit isEqualToString: @"3"]) {
firstDigit=@"wet";
NSLog(@"ice");
}
if ([secDigit isEqualToString: @"1"]) {
secDigit=@"wet";
NSLog(@"wet");
}
if ([secDigit isEqualToString: @"2"]) {
secDigit=@"snow";
NSLog(@"snow");
}
if ([secDigit isEqualToString: @"3"]) {
secDigit=@"ice";
NSLog(@"ice");
}
thanks to all of you….. here my code (working now):
NSString *depositOverTotalRwy = [NSString stringWithFormat:@"%@", [deposit text]];
NSArray *components = [depositOverTotalRwy
componentsSeparatedByString:@"/"];
NSString *firstThird = [components objectAtIndex:0];
char firstChar = [firstThird characterAtIndex:0];
NSString *firstDigit = [NSString stringWithFormat:@"%c",firstChar];
NSLog(@" i'm %@", firstDigit);
if ([firstDigit isEqualToString: @"1"]) {
firstDigit=@"wet";
NSLog(@"wet");
}
if ([firstDigit isEqualToString: @"2"]) {
firstDigit=@"wet";
NSLog(@"snow");
}
if ([firstDigit isEqualToString: @"3"]) {
firstDigit=@"wet";
NSLog(@"ice");
}
if ([firstThird length] >1) {
char secChar = [firstThird characterAtIndex:1];
NSString *secDigit = [NSString stringWithFormat:@"%c", secChar];
if ([secDigit isEqualToString: @"1"]) {
secDigit=@"wet";
NSLog(@"wet");
}
if ([secDigit isEqualToString: @"2"]) {
secDigit=@"snow";
NSLog(@"snow");
}
if ([secDigit isEqualToString: @"3"]) {
secDigit=@"ice";
NSLog(@"ice");
}
}
I guess you code crashes in this line:
This is because you try to access a character outside of the string bounds. You need to guard against this by checking the length of the string first:
But I’d also like to recommend to not use an NSString here, as you already have a
char. Just do something like this: