NSInvalidArgumentException,nil参数

时间:2012-10-15 02:54:21

标签: objective-c xcode switch-statement ibaction

我已经浏览了一段时间,我看到了一些东西,但没有任何东西对我有用。这里有极端的新手。

我正在尝试创建一个2组件选择器,从数组中填充,从字典中填充,从plist填充。组件填充,我有一个旋转一个组件的按钮。第二个按钮用于检查答案(第一个组件具有与第二个组件中的大写字符匹配的状态),但这是它总是崩溃的地方。

我得到的错误如下:

  

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [NSPlaceholderString initWithFormat:locale:arguments:]:nil参数'

     

* 第一次抛出调用堆栈:   (0x14b3022 0xeb3cd6 0x145ba48 0x145b9b9 0x916169 0x916ab4 0x3036 0x14b4e99 0x1914e 0x190e6 0xbfade 0xbffa7 0xbf266 0x3e3c0 0x3e5e6 0x24dc4 0x18634 0x139def5 0x1487195 0x13ebff2 0x13ea8da 0x13e9d84 0x13e9c9b 0x139c7d8 0x139c88a 0x16626 0x27ad 0x2715)   终止调用抛出异常(lldb)

我不确定我哪里出错了。我用硬编码数组完成了这个,它工作正常。按钮的代码是这样的(请忽略开关代码,我还没有弄清楚如何使其工作,我希望屏幕变为绿色以获得正确答案,红色表示不正确,但我更关注随着应用程序崩溃!):

  

- (IBAction为)checkAnswer;   {       NSInteger StateRow = [pickerCapital selectedRowInComponent:karrayStateComponent];       NSInteger CapitalRow = [pickerCapital selectedRowInComponent:karrayCapitalComponent];

NSString *state = [arrayState objectAtIndex:StateRow];
NSString *capital = [arrayCapital objectAtIndex:CapitalRow];

NSLog (@"%i",[pickerCapital selectedRowInComponent:karrayCapitalComponent]);
NSLog(@"%i", [pickerCapital selectedRowInComponent:karrayStateComponent]);

NSString *Title = [[NSString alloc]initWithFormat:@"You have selected %@ as the capital of %@.", capital, state];
NSString *Message =[[NSString alloc]initWithFormat:lblMsg];

UIAlertView *alert =[[UIAlertView alloc]initWithTitle:Title message:Message delegate:@"" cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];

if (StateRow == CapitalRow) {
    lblMsg = @"You are correct!";
    UIColor *myColor;
    switch ([not sure what to use here]) {
        case 0:
        myColor = [UIColor greenColor];
            break;
        default:
            break;
    }
}
else {
    lblMsg = @"Incorrect";
    UIColor *myColor;
    switch ([not sure what to use here]) {
        case 0:
        myColor = [UIColor redColor];
            break;        
        default:
            break;
    }
}

}

如果有人可以提供任何形式的帮助,我将非常感激!谢谢!

1 个答案:

答案 0 :(得分:0)

要检查两件事:

  • lblMsg在哪里声明或赋值?
  • 你确定资本和状态不是来自[arrayCapital objectAtIndex]的调用吗?

具体来说:the NSString documentation状态“重要:如果格式为nil,则引发NSInvalidArgumentException。”对于initWithFormat。