2011-05-03 127 views
0

有人可以填寫此枚舉行的其餘部分嗎?沒有一個例子,我簡直不明白枚舉。我試圖按距離用戶最近的距離排列表格視圖。下面的代碼是緯度部分,它試圖通過plist數據枚舉(索引爲4的對象是存儲爲NSNumber的緯度,clubLocation和myLocation是分別返回位置和用戶位置的方法)。枚舉如何工作以及它返回的是什麼?數組?如何將數組結果與plist的其他部分同步,如位置的名稱?非常感謝。瞭解枚舉

-(NSArray *)distanceFromLat 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Data3" ofType:@"plist"]; 
    NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 

    NSMutableArray *latitudeArray = [[NSMutableArray alloc] init]; 
    latitudeArray = [[tempDictionary objectForKey:@"Subtree"]objectAtIndex:4]; 

    NSEnumerator *enumLat = [latitudeArray objectEnumerator]; 
    id object; 

    while ((object = [enumLat nextObject])) { 
     [myLocation distanceFromLocation:clubLocation]; 
    } 

} 
+0

緯度陣列持有什麼?什麼類型的對象? – 2011-05-03 22:57:10

+0

plist中的對象是數字,索引4處是一個雙重對象。 – Eric 2011-05-03 23:03:08

回答

1

爲什麼不使用「快速枚舉」?

for (id latitude in latitudeArray) { 
.. 
} 

您可以用數組中的緯度對象的實際類型替換id。根據你的意見,這將是NSNumber。

枚舉的NSEnumerator樣式以相同的方式工作。循環中的每個對象都是該數組中的一個對象,該數組將被枚舉,以便它包含的每個對象都被訪問一次。 「快速枚舉」更好,因爲它實際上速度更快,在概念上很容易看出發生了什麼 - 「對於所有xy」。

,讓您的緯度排序按距離從表中顯示,你可以創建一個從用戶(NSNumber)的距離做了重點一個可變字典這是緯度的索引,用戶和對象的latitudeArrayNSNumber)。然後使用該字典上的allKeys來獲取所有NSNumber鍵的數組,並將其排序爲sortedArrayUsingSelector:@selector(compare:),並且顯示非常簡單 - 通過獲取排序數組中的第一個鍵,獲取它在字典中鍵的索引然後使用該索引從latitudeArray中檢索正確的緯度。

+0

感謝@Adam,讓我通過今天的工作,我會盡快回復您 – Eric 2011-05-04 12:59:08