好的,所以我;建立一个界面,允许管理员控制使用UISwitches控制的某些规则(很多)
所以我宣布了一系列开关
NSMutableArray *cameraSwitches = [[NSMutableArray alloc] initWithObjects:
loc0CamProfileSwitch, loc1CamProfileSwitch, loc2CamProfileSwitch,
loc3CamProfileSwitch, loc4CamProfileSwitch, loc5CamProfileSwitch,
loc6CamProfileSwitch, loc7CamProfileSwitch, loc8CamProfileSwitch, nil];
其中Array中的每个对象都是UISwitch,
然后我循环遍历diff数组,检查这些开关的初始值
for (NSUInteger i = 0; i < [camP count]; i++) {
if ([camP objectAtIndex:i] != 0) {
//UISwitch *csw = [cameraSwitches objectAtIndex:i];
//[csw setOn:YES];
[[cameraSwitches objectAtIndex:i] setOn:YES];
else { [loc7CamProfileSwitch setOn:NO]; }
}
但是我正在尝试的一切都是在运行时给我一个错误,抛出异常
'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
使用断点:我意识到这一行有问题
[[cameraSwitches objectAtIndex:i] setOn:YES];
- 或者我如何启动数组任何帮助都非常感谢
答案 0 :(得分:1)
cameraSwitches被正确实例化。这就是为什么当你试图达到索引0时会引发异常的原因。
但是,你检查过loc0CamProfileSwitch(索引0)是否为零?
答案 1 :(得分:1)
最有可能的是,cameraSwitches
在实例化后被取消分配。如果您使用与调用objectAtIndex
时不同的方法创建它并且您没有将其设置为iVar或@property(强),则可能会发生这种情况。
如果这不能解决问题,请在[[cameraSwitches objectAtIndex:i] setOn:YES]
上设置断点并在调试控制台中键入po cameraSwitches
。