0

我将字符串拆分为数组中的字符,具体取决于执行操作的字符。如果文本字段为空白或其中包含 1 个字符,则应用程序因 NSRangeException 而崩溃。如果有 2 个或更多字符,则它可以正常工作,部分代码如下:

-(IBAction) text: (id) sender{


    //labelText.text = [[NSString alloc] initWithFormat:@"%@",textField1];
    labelText.text = textField1.text;
    NSString *myString = textField1.text;

    NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
    for (int i=0; i < [myString length]; i++) {
        NSString *ichar  = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
        [characters addObject:ichar];
    }

    //NSLog (@"%@", [characters objectAtIndex:1]);
    //NSLog (@"%@", [characters objectAtIndex:2]);

    one1.text = (@"%@", [characters objectAtIndex:1]);

    if ([textField1.text length] == 0) {
        UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Please enter number in the box above." message:@"" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [myAlert show];
        [myAlert release];

    }


    else if ([textField1.text length] == 1){
        NSString *char1 = [characters objectAtIndex:0];
        Charr1 = char1;

    }

    else if ([textField1.text length] == 2){
        NSString *char1 = [characters objectAtIndex:0];
        NSString *char2 = [characters objectAtIndex:1];
        Charr1 = char1;
        Charr2 = char2;

    }else if ([textField1.text length] == 3){
        NSString *char1 = [characters objectAtIndex:0];
        NSString *char2 = [characters objectAtIndex:1];
        NSString *char3 = [characters objectAtIndex:2];
        Charr1 = char1;
        Charr2 = char2;
        Charr3 = char3;


    }else if ([textField1.text length] == 4){
        NSString *char1 = [characters objectAtIndex:0];
        NSString *char2 = [characters objectAtIndex:1];
        NSString *char3 = [characters objectAtIndex:2];
        NSString *char4 = [characters objectAtIndex:3];
        Charr1 = char1;
        Charr2 = char2;
        Charr3 = char3;
        Charr4 = char4;

    }else if ([textField1.text length] == 5){
        NSString *char1 = [characters objectAtIndex:0];
        NSString *char2 = [characters objectAtIndex:1];
        NSString *char3 = [characters objectAtIndex:2];
        NSString *char4 = [characters objectAtIndex:3];
        NSString *char5 = [characters objectAtIndex:4];

        Charr1 = char1;
        Charr2 = char2;
        Charr3 = char3;
        Charr4 = char4;
        Charr5 = char5;
4

2 回答 2

2

您的代码中的这一行会使您的应用程序崩溃,因为如果您的字符串中有 0 或 1 个字符,那么您的字符串您无法在 location:1 访问

one1.text = (@"%@", [characters objectAtIndex:1]);

解决将整个代码放在 for 循环之后的 if 条件

if([characters count] > 0)
{
   // your code after for loop write here 
}
于 2013-03-25T15:17:40.107 回答
1

您只是忘记删除此行:

one1.text = (@"%@", [characters objectAtIndex:1]);
于 2013-03-25T15:17:17.737 回答