2013-05-12 50 views
0

我必須使用的NSSet與CLRegion對象

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

獲得兩套一個使用

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

和其他所得。當我嘗試設置它們之間不works.Should我操作實現一個CLRegion類別並實現isEqual:和hash:方法。是否有更好的方法來做到這一點。

[monitoredRegionSet intersectSet:regionSet]; 
[monitoredRegionSet minusSet:regionSet]; 
+0

什麼「在它們之間設置操作」? – trojanfoe 2013-05-12 16:08:34

+0

我試過minusSet:和intersectSect:但都沒有工作。 – agupta 2013-05-12 16:22:29

+0

你可以發佈代碼與操作? – danypata 2013-05-12 16:43:09

回答

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

即一個完全新的,不同的區域的對象。在沒有任何區域平等​​的內置概念的情況下,保證在包含此區域對象的集合與先前存在的一組區域對象之間存在交集。

正如你所暗示的,你可以玩CLRegion isEqual:hash。但那是你真正想做的事嗎?更好的問題可能是:你究竟想在這裏完成什麼?例如,從第一組直接繪製第二組的區域可能更合適也更簡單。

編輯:你的最簡單的方法可能是這樣的:

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

只要停止監控所有的地區,並與新的組區域的重新開始(其中一些,當然,可能恰好與您已經監控的地區相同)。

+0

我將區域信息作爲字符串獲取,我使用它解析和構建區域。我需要停止監視不再有效的區域,並開始監視新區域。 – agupta 2013-05-12 18:06:43

+0

因此,給定區域信息,只需枚舉第一組並查看是否存在等效區域。 – matt 2013-05-12 18:08:37

+0

或者只是停止監視您正在監視的所有內容並重新開始,正如我在編輯的答案中所建議的那樣。保持簡單。 – matt 2013-05-12 18:26:21