【问题标题】:unrecognized selector on NSArray : 'NSInvalidArgumentException'NSArray 上无法识别的选择器:'NSInvalidArgumentException'
【发布时间】: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


【解决方案1】:

尝试投射

withString:[[DBElements objectAtIndex:index] objectAtIndex:i]

像这样:

withString:(NSString *)[[DBElements objectAtIndex:index] objectAtIndex:i]

希望对你有帮助!

【讨论】:

    【解决方案2】:

    在您的代码中的某处您正在调用 intValue NSArray。也许在addElementsToView 方法中。

    查看(短)代码示例,我认为它与 DBElements 有关。您可能想在 NSString 上调用 intValue 以将其转换为数值。

    如果你有一个嵌套在数组中的数组,那么请确保你在正确的对象上调用正确的选择器。

    【讨论】:

    • 这看起来更像是评论而不是答案。事实上,它看起来像是对现有 cmets 的总结。
    • answer: '你在 NSArray 上调用 intValue'
    • 现在您正在总结异常消息。
    • 所以异常消息不能成为答案的一部分?让我们不要浪费我们的时间,等待 Watchsche 看看它是否让他走上了正轨。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2012-07-16
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多