0

私は2つのセットを使用して取得しました

NSMutableSet *monitoredRegionSet = [[locationManager monitoredRegions]mutableCopy];

もう 1 つは、

NSMutableSet *regionSet = [NSMutableSet setWithCapacity:regionChunks.count];
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate radius:radius        
identifier:regionString];
[regionSet addObject:region];

それらの間に操作を設定しようとすると、機能しません.CLRegionのカテゴリを実装し、isEqual:およびhash:メソッドを実装する必要があります.これを行うためのより良いアプローチはありますか.

[monitoredRegionSet intersectSet:regionSet];
[monitoredRegionSet minusSet:regionSet];
4

1 に答える 1

0
CLRegion *region = 
    [[CLRegion alloc] initCircularRegionWithCenter:coordinate 
        radius:radius        
    identifier:regionString];

これはまったく新しい、異なるリージョン オブジェクトです。領域が等しいという組み込みの概念がない場合、この領域オブジェクトを含むセットと以前に存在した領域オブジェクトのセットとの間に交差がないことが保証されます。

あなたが正しく暗示しているように、CLRegionisEqual:hash. でも、それって本当にやりたいことですか?より良い質問は、ここで実際に何を達成しようとしているのかということです。たとえば、最初のセットから直接 2 番目のセットの領域を描画する方が適切で簡単な場合があります。

編集:あなたの最も簡単なアプローチは次のようなものかもしれません:

https://stackoverflow.com/a/7197192/341994

すべてのリージョンの監視を停止し、新しいリージョン セットでやり直してください (もちろん、その一部は、既に監視していたリージョンと同じである可能性があります)。

于 2013-05-12T17:34:24.130 に答える