私は、例外の使用に慣れているPythonの世界の開発者です。私は多くの場所で例外を使用することはそれほど賢明ではないことを発見し、必要に応じてNSErrorsに変換するために最善を尽くしました。しかし、私はこれに遭遇します:
NSMutableArray *results;
for (NSDictionary *dict in dicts)
{
// Memory management code omitted
SomeModel *model = [[SomeModel alloc] init];
model.attr1 = [[dict objectForKey:@"key1"] integerValue];
model.attr2 = [[dict objectForKey:@"key2"] integerValue];
model.attr3 = [[dict objectForKey:@"key3"] integerValue];
model.attr4 = [[dict objectForKey:@"key4"] integerValue];
[results addObject:model];
}
dict内の一部のオブジェクトにNSNullが含まれているため、「認識されないセレクター」例外が発生します。その場合、そのデータムを完全に削除したいと思います。私の最初の本能は、forブロックのコンテンツ全体を@ try-@catchブロックにラップすることです。
NSMutableArray *results;
for (NSDictionary *dict in dicts)
{
@try
{
SomeModel *model = [[SomeModel alloc] init];
model.attr1 = [[dict objectForKey:@"key1"] integerValue];
model.attr2 = [[dict objectForKey:@"key2"] integerValue];
model.attr3 = [[dict objectForKey:@"key3"] integerValue];
model.attr4 = [[dict objectForKey:@"key4"] integerValue];
[results addObject:model];
}
@catch(NSException *exception)
{
// Do something
}
}
しかし、これは良いアプローチですか?各変数のチェックを繰り返さずに解決策を思いつくことはできません。これは本当に醜いIMOです。うまくいけば、私には思いつかなかったこれに代わるものがあります。前もって感謝します。