編集:より良い例...
したがって、「既存の」オブジェクトの NSMutableSet があり、JSON データをダウンロードして解析し、これらの新しいオブジェクトを既存のオブジェクトとマージして、新しくダウンロードしたオブジェクトで重複を更新したいと考えています。既存のオブジェクトのセットは次のようになります。
NSArray *savedObjects = [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"id", @"hello there", @"body", @"200", @"score", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"2", @"id", @"hey now", @"body", @"10", @"score", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"3", @"id", @"welcome!", @"body", @"123", @"score", nil],
nil
];
self.objects = [NSMutableSet setWithArray:savedObjects];
// after downloading and parsing JSON... I have an example array of objects like this:
NSArray *newObjects = [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"id", @"hello there", @"body", @"9999", @"score", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"4", @"id", @"what's new", @"body", @"22", @"score", nil],
nil
];
たとえば、この新しいオブジェクトをマージした後、ID 1 のオブジェクトのスコアは 9999 になり、ID 4 の新しいオブジェクトがセットに追加されます。
@"id" プロパティが存在することを確認するためだけに、すべての新しいオブジェクトに対して NSMutableSet をループすることを本当に避けたいです... addObjectsFromArray を使用してこれらの新しいオブジェクトをマージできると考えていましたが、プロパティが異なるため (例:スコア: 9999) 新しいオブジェクトがセット内の既存のオブジェクトとして認識されていません。
この例を単純化するために、数値を文字列として使用しています。また、アプリは 3.0 と互換性があるため、iOS SDK 4.0 のみの機能の使用は避けたいと思います。
ありがとうございます!それは有り難いです!