0
NSString* year = [self.years objectAtIndex:[indexPath section]];

//get algorithms for that year
NSArray* algorithmSection = [self.algorithmNames objectForKey:year];

NSLog(@"%@", indexPath);

//get specific algorithm based on that row
cell.textLabel.text = [algorithmSection objectAtIndex:indexPath.row];

return cell;

何らかの理由で、これをコンパイルすると、SIGABRTエラーが発生します。それはで起こります

cell.textLabel.text

ライン。エラー:

2011-08-29 19:26:21.273 xxxxxxxxxxx [1431:b303] 2つのインデックス[0、0]

2011-08-29 19:26:21.274 xxxxxxxxxxxxx [1431:b303]-[__ NSCFDictionary objectAtIndex:]:認識されないセレクターがインスタンス0x4ba2370に送信されました

2011-08-29 19:26:21.277 xxxxxxxxx [1431:b303] *キャッチされなかった例外によるアプリの終了'NSInvalidArgumentException'、理由:'-[__ NSCFDictionary objectAtIndex:]:インスタンス0x4ba2370に送信された認識されないセレクターが終了し、例外がスローされました

4

3 に答える 3

1

algorithmSectionコードが期待する変数は、NSArray実際にはNSDictionaryであり、セレクターに応答しません-objectAtIndex:

于 2011-08-29T23:31:29.230 に答える
1

lemnarとmjisawaiが言ったように、あなたは実際にNSDictionaryを扱っています。

これを修正する方法は、アプリのコンテキストによって異なります。NSArraysまたはNSDictionaryオブジェクトのいずれかを受け取った場合は、オブジェクトのクラスにテキストメッセージを送信することでこれを判断できます。

すなわち

if ([algorithmSection isKindOfClass:[NSArray class]]) {
  ...
} else if ([algorithmSection isKindOfClass:[NSDictionary class]]) {
  ...
}
于 2011-08-30T01:05:12.957 に答える
0

AlgorithmSectionsディクショナリのキー「year」にあるオブジェクトは、配列ではなくディクショナリである可能性がありますか?それがここで起こっているように見えます。

于 2011-08-29T23:34:08.327 に答える