-2

我正在尝试获取一个包含我的数据的数组,当我运行它时,我一直收到 BAD_ACCESS 错误,尽管在调用我没有包含在此处的数组时,但我什至注释掉了该代码并尝试将其调用到日志中并仍然收到 BAD_ACCESS 错误。该数组存储在一个字典中,该字典包含一个数字键。我不确定我在这里做错了什么。

ISData *is = [[ISData alloc] init];
NSDictionary *dic = [is getData:@"right" : isNumber];

NSArray *array = [[NSArray alloc] initWithArray:[dic valueForKey:@"2"]];

NSString *out = [array objectAtIndex:0];

字典是如何创建的:

NSNumber* key = [NSNumber numberWithInt:isNumber];
NSArray *values = [NSArray arrayWithObjects:[NSString stringWithUTF8String:name], [NSString stringWithUTF8String:desc], [NSString stringWithUTF8String:intent], nil];

[dic setObject:values forKey:key];
4

2 回答 2

0

您的数组很可能是空的。您可以尝试打印NSLog(@"count = %d", array.count);以查看是否是这种情况。

如果你dic是在第二个代码块中设置的,那么NSDictionary *dic = [is getData:...]第一个块中的那个东西是什么?

您是否有理由无法直接设置阵列?当字典只有一个键时,你有理由使用它吗?

于 2012-08-03T17:46:50.567 回答
0

您没有确切说明它在哪里崩溃,并且这里没有明显的崩溃错误,因此很难诊断出您的实际问题。这可能是您提供的代码之外的内存管理问题。但是这里发生了一些可疑的事情:

  1. [MyClass alloc]没有电话,您永远不应该裸露-init。你的 init 应该调用 super 的 init,它负责设置新对象。

  2. -valueForKey:应该是-objectForKey:。在这种情况下,差异可能并不重要,但前者用于“KVC”编码,而您没有使用它。如果将其设置为对象,则将其作为对象获取。

  3. @"2"作为字典的键与你的输入不匹配,这是一个 NSNumber。NSNumbers 不是数字的字符串版本,因此您不太可能在那里找到任何值。相反,请使用相同的[NSNumber numberWithInt:2]模式。

于 2012-08-03T17:47:52.083 回答