isEqualToArray
実際どうなのか知りたい...
サイズ 160 の配列があり、それぞれに 11 エントリの辞書が含まれていますが、単純に最初の列 (行が変更された日付を含む) に基づいて比較を行うことができます。
これで、単純な for サイクルでそれを行うことができます。
BOOL different = FALSE;
for (int index = 0 ; index < [newInfo count] ; ++index)
if (![[[oldInfo objectAtIndex:index] objectForKey:@"Update"] isEqual:[[newInfo objectAtIndex:index] objectForKey:@"Update"]]) {
different = TRUE;
break;
}
if (different) {
}
else
NSLog(@"Contact information hasn't been updated yet");
または、組み込みの isEqualToArray メソッドを使用できます。
if ([oldInfo isEqualToArray:newInfo])
NSLog(@"Contact information hasn't been updated yet");
else {
NSLog(@"Contact information has been updated, saving new contact information");
[newInfo writeToFile:path atomically:YES];
}
ここで、セルごとisEqualToArray
に呼び出すだけだと仮定すると、for ループ メソッドは実行時間の 1/11 で実行されます (11 ではなく 1 つの列のみを比較する必要があります)。isEqualTo
isEqualToArray
たぶん、私は最適化に夢中になっているだけかもしれません... (実行時間が制限されている多くのコンテストに参加しており、後遺症を感じています)。