2010-04-30 54 views
0

我想要一個自定義類對象來保存數據,並且不知何故,創建大約80個屬性並不是最好的方式。類屬性vs NSArray/NSDictionary

大部分屬性都是布爾值,所以我想創建數組(鍵/值)或(可能更好)附加到對象的NSDictionary用於保存數據。這是有道理的,還是我應該留下的財產?

額外:對於不同的方法是否有一般優點和缺點?以及我需要尋找哪些關鍵字/概念來尋找關於某種常見問題的討論?

在此先感謝

回答

3

如果您期望某些行爲,您應該使用類來創建對象(在將來的程序中)。我的意思是,對象 - 不僅僅是存儲變量的東西。它也假設某種活動(稱爲行爲)。屬性不僅是設置某些值的方式(作爲對象的特性),還有影響這種行爲的方式(除了保存數據 - 一些檢查或smth.else外,您可以添加額外的代碼部分)。

如果你只需要構造來存儲數據 - 這不僅僅是更好,這是一個更合乎邏輯的步驟來將它們存儲爲數組或字典。

字典在大多數情況下更好,因爲您可以通過鍵名訪問存儲的值。而你的代碼將會更容易理解。但數組應該是(我不知道確切地說,只是假設)更快地訪問(在其他字符串中找到字符串鍵比在遞增數字序列中的索引更難找到)。

+0

實際上,我只需要該數據對象來設置和保存數據。所以,當我明白你的權利,我根本不需要一個自定義數據對象,但應該直接使用NSDictionary對象呢? – 2010-04-30 11:56:03

+0

關於使用80多個變量......我認爲,Alex Reynolds的建議(下面)是最好的 - 你應該嘗試將類似的數據分組來創建子集。 如果你的數據真的很「簡單」(如bool,int或float值 - 沒有硬內存管理),你也可以使用結構(C-structs)。優點:良好的內存使用(沒有額外的內存用於保存密鑰或其他內容),代碼完成(打字時)和編譯器時間檢查。 – kpower 2010-05-04 08:07:52

+0

+1好答案。 – 2010-06-22 03:12:49

1

我同意你好得多使用對象來保存這些值。它會讓你的代碼更清晰閱讀/理解。我會去使用NSDictionary而不是數組,因爲你可以通過名字訪問每個布爾值。一個數組意味着你必須通過索引來訪問元素,這使得代碼難以理解。

2

NSArrayNSArray在索引容器中存儲基礎對象(基數NS類型對象,如NSNumberNSString等)。 NSArray沒有鍵值對。您將使用NSDictionary將鍵值對中的Foundation對象存儲起來。

80的東西很多。你可以將它們分組爲子集?這可能會使該數據集的維護更易於管理。