2011-02-27 38 views
0

表示這種數據結構的最佳方式是什麼?我正在使用Objective-C進行iPhone開發,但通常情況很好。如何在Objective-C中表示表格數據

   Location1   Location2   Location3 
Location1  0     8     23 
Location2  8     0     16 
Location3  23     16    0 

我所能做的嵌套數組...

table = ['Location1' => ['Location 1' => '0', 
         'Location 2' => '8', 
         'Location 3' => '23'], 
     'Location2' => ['Location 1' => '8', 
         'Location 2' => '0', 
         'Location 3' => '16'], 
     'Location3' => ['Location 1' => '23', 
         'Location 2' => '16', 
         'Location 3' => '0']] 

...但我不知道這是最有效的方法是有很多的數據複製。也許某種面向對象的方法?

此外,是否有任何特殊的iPhone Objective-C數據結構可以幫助自己處理這類數據?

+0

這涵蓋了二維數組:http://stackoverflow.com/questions/ 638129 /如何對聲明-A-二維陣列-的串型功能於物鏡ective-c – madmik3

回答

1

您可以使用一個數組數組,即NSArray包含其他NSArray對象的對象包含數據。這種方法的不利之處在於,它取決於您的程序對數組大小實施限制,以便每行和每列具有一致的大小。如果您的數據是靜態和可修改的(僅包含字符串,數字,日期,數據,數組或字典),請考慮將其存儲在plist文件中,並使用[NSArray arrayWithContentsOfFile:]一次加載它。

如果您希望使用密鑰(如Location1)訪問數據,則需要使用NSDictionary對象而不是NSArray對象;但是這樣做會使您無法按順序訪問數據或通過數字索引訪問數據(必須始終通過鍵訪問數據)。另外,如果您的數據是可變的(即您希望能夠更改數據),則需要使用NSMutableArrayNSMutableDictionary

+0

數據是不可變的(可能應該提到這一點),所以plists似乎是一個好方法。我會對它們進行一些研究(我沒有長時間開發iPhone應用程序,之前從未使用過)。謝謝! – user116170

+0

快速提問:有很多數據還是隻有一點點?如果它很多,那麼plists可能不是最好的選擇,因爲它全部放在一個膨脹的foop中。快,是的,但不是很多數據。 – BillEccles

1

我會建議做一個NSobject類的位置,與成員location1,location2和location3。然後你可以使用位置對象獲取如下值:
[locationobj location1];
以後你可以做的NSArray或這些對象的mutablearray太

1

您可以創建其中使用一個NSMutableArray內部,使用2D索引和一維指數或標記之間的轉換一個Mutable2DArray類:

index1D = numColumns * row2DIndex + column2DIndex; 

您甚至可以在內部使用純C數組,這取決於表格數據類型和其他要求(重用,可擴展性,效率,內存使用情況等)

相關問題