【发布时间】:2014-08-23 00:31:38
【问题描述】:
我因为一些奇怪的异常而坐了一个小时。 我尝试调用一些方法:
for (int i = 0; i < [[DBElements objectAtIndex:index] count]; i++) {
NSLog(@"selected Element: %@", [[DBElements objectAtIndex:index] objectAtIndex:i]);
[self addElementsToView:dash withString:[[DBElements objectAtIndex:index] objectAtIndex:i] index:index andSubindex:i];
}
方法的类型:-(void) addElementsToView: (UIView *) dash withString: (NSString *) type index:(NSInteger)index andSubindex : (int) i {}
NSLog 给我看:
所选元素:NUMBER 所以索引的东西没问题。 为什么我下一步会出现以下异常:
[__NSArrayI intValue]: 无法识别的选择器发送到实例 0x14d44f70 * 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSArrayI intValue]: 无法识别的选择器发送到实例 0x14d44f70'
更新: DBElements 是:
( ( 数字, 标签 ), 标签 )
索引为 0 i 为 0。因此它显示为 NSString 类型的 NUMBERS。
【问题讨论】:
-
将所有 objectAtIndex 操作拆分为不同的行,启用异常断点并查看它到底发生在哪里。很难预测您在这些数组中拥有什么 - 可能会提供您正在迭代的数据转储
-
你的 DBElements 必须包含不是 NSArray 的对象
-
也请分享addElementsToView的代码。另外请在这个方法上设置一个断点 - 据我了解,它给出了尝试执行此方法的异常,是这样吗?
-
因此,您在 addElementsToView 中放置了一个断点,在它捕获异常之前:使用这一些代码信息,我将尝试强制转换“withString:[[DBElements objectAtIndex:index] objectAtIndex:i]”,例如这个:“withString:(NSString *)[[DBElements objectAtIndex:index] objectAtIndex:i]”
-
@codedad :是的,你是对的。现在可以了。请写出答案。
标签: ios objective-c exception