2011-06-28 156 views
1

我正在構建一個簡單的應用程序,所有的功能都是從CLLocation每個hout存儲'位置'。我對客觀C非常陌生,只是想知道哪種結構對於這個目的是理想的。什麼是存儲位置信息的最佳數據結構?

謝謝!

+1

如果您想要一個輕量級的結構來存儲數千個位置,請創建一個只包含所需字段的C結構體。如果你只需要經緯度,你可以使用CLLocationCoordinate2D。 – Jano

回答

1

這取決於你所必須做與:

  • 如果你必須有命令他們(通過時間戳,例如)數組好
  • 如果您在使用它們進行檢索一種關鍵的,字典是好的
  • 如果你只收集它們,一組是更好的(想想NSSet

記住NSArrayNSDictionaryNSSet只存儲對象。

+0

感謝所有的答覆。我想要做的就是根據時間戳將我的位置存儲在一個數組中。它並不重要。它應該是一個包含數百個位置的列表,我將稍後保存到一個文件中(並希望在Google地球上進行繪圖,但我遠離它)。現在,我只需要了解應該爲這些位置使用什麼樣的數組或數據結構(基本上,經緯度/時間,但想保持靈活性) – TommyG

1

當然,對於二維座標CLLocationCoordinate2D,或者如果你想高空也可以使用此:

typedef struct { 
    CLLocationCoordinate2D ground, 
    double altitude; 
} CLLocationCoordinate2DWithAltitude; 
0

是否有任何一點具有這些地點?你會用他們實現任何特定的算法嗎?

如果我所做的只是存儲任意位置,我可能會用「位置」對象包裝它們,然後將位置對象存儲在鏈接列表或數組中。

如果您要嘗試將位置解析爲邏輯地址,那麼您可能希望將它們存儲在鄰接矩陣或列表(二維數組)中,以便您可以對它們執行圖形操作(例如最短路徑算法)。

鏈接列表實現可以在這裏找到:http://www.cocoadev.com/index.pl?LinkedList

這不是一個數組,它是一種更高級的數據結構。這是非常常用的,因爲數據結構的大小沒有限制。

+0

Nop,而不是任何後處理的位置。聽起來很簡單。你可以參考一個示例代碼來編寫這樣一個具有未知大小的數組嗎? (當用戶退出應用程序時,計劃基本上是「轉儲」文件)。 – TommyG

+0

爲了您目前的需要,您所需要做的就是將您的CLLocation對象存儲到NSMutableArray中。創建這樣一個數組的代碼是NSMutableArray * myArray = [[NSMutableArray alloc] arrayWithCapacity:512];並添加項目,你會做[myArray addObject:locObj];最終你可以將這個數組存儲到文件中,即使你表示你對此沒有興趣。 – Perception

+0

我有興趣將它存儲到一個文件中。但爲什麼我應該只使用NSMutableArray而不是NSArray?大小怎麼樣?我不知道它會有多大 - 我可以只追加對象嗎?謝謝!! – TommyG

相關問題