/ / Ako reprezentovať tabuľkové údaje v Objective-C - ios, object-c, iphone, dátové štruktúry, tabuľkové

Ako reprezentovať tabuľkové dáta v Objective-C - ios, objektív-c, iphone, dátové štruktúry, tabuľkové

Aký je najlepší spôsob, ako reprezentovať túto štruktúru údajov? Používam Objective-C pre vývoj iPhone, ale vo všeobecnosti je v poriadku.

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

Mohol by som robiť vnorené polia ...

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"]]

... ale nie som si istý, či je to najefektívnejší spôsob, pretože existuje veľa replikácií údajov. Možno nejaká objektovo orientovaná metóda?

Existujú nejaké špeciálne dátové štruktúry C-iPhone pre iPhone, ktoré by sa takémuto typu dát hodili?

odpovede:

1 pre odpoveď č. 1

Mohli by ste použiť celý rad polí, to je NSArray objekty, ktoré obsahujú iné NSArray objekty, ktoré obsahujú údaje. Nevýhodou tohto prístupu je, že je na vašom programe, aby presadil obmedzenia veľkosti poľa tak, aby každý riadok a stĺpec mal konzistentnú veľkosť. Ak sú vaše údaje statické a je možné ich použiť v plnom rozsahu (obsahuje iba reťazce, čísla, dátumy, údaje, polia alebo slovníky), zvážte ich uloženie do súboru plist a ich načítanie naraz pomocou [NSArray arrayWithContentsOfFile:].

Ak si prajete získať prístup k údajom pomocou kľúčov ako napr Location1, potom budete musieť použiť NSDictionary objekty namiesto NSArray predmety; Pritom však stratíte možnosť prístupu k údajom postupne alebo pomocou číselného indexu (vždy k nim musíte získať prístup pomocou klávesu).

Ak sú vaše údaje premenlivé (to znamená, že ich chcete zmeniť), musíte použiť NSMutableArray alebo NSMutableDictionary.


1 pre odpoveď č. 2

Odporučil by som vytvoriť triedu umiestnenia NSobject s členmi location1, location2 a location3. a potom môžete použiť lokačný objekt na získanie hodnôt ako:
[locationobj location1];
neskôr Z týchto objektov môžete tiež vytvoriť nsarray alebo mutablearray


1 pre odpoveď č. 3

Môžete vytvoriť triedu Mutable2DArray, ktorá interne používala NSMutableArray, pomocou prevodu medzi 2D indexmi a 1D indexom alebo značkou:

index1D = numColumns * row2DIndex + column2DIndex;

Môžete dokonca použiť interné pole C interne, v závislosti od tabuľkového dátového typu a ďalších požiadaviek (opätovné použitie, rozšíriteľnosť, efektívnosť, využitie pamäte atď.)