2013-01-08 43 views
-1

嗨,我有NSArray的id對象。 而且我知道對象描述NSString。 我如何找到對象並避免數組枚舉? p.s.我不喜歡使用NSDictionary中,BCS這是做代碼更難NSArray - 快速查找已知描述的對象索引

+1

試着從一開始就以正確的方式學習東西,並讓自己在稍後放棄錯誤/劣等的方法。如果你需要通過一個給定的鍵來存儲和檢索對象,這就是說使用字典。使用'[dict setObject:object forKey:@「key」]'和'[dict objectForKey:@「key」]'不僅僅比使用謂詞過濾數組更容易掌握,它通常也會更快更好的方式來做到這一點。 – Regexident

+0

@Regexident:我不知道他的要求是什麼我回答謂詞將解決你的問題,但他需要別的東西...請檢查我的回答與評論。 –

+0

此外,對象描述的目的不是用作任何類型的關鍵/謂詞。它的主要目的是調試/日誌記錄。其他一切(通常)都表示某種[代碼氣味](http://en.wikipedia.org/wiki/Code_smell)。 – Regexident

回答

2

如果這是您計劃查詢要更頻繁地執行並且速度是一個問題,您可能不應將對象存儲在NSArray中,而應將其存儲在NSDictionary中,其中鍵是對象的描述字符串,值是對象本身。然後可以使用objectForKey:和描述字符串作爲參數,這是O(1)查找。

+0

我的理由,以避免字典,BCS我需要更清晰的代碼 – user170317

+2

字典比數組更清晰... –

+0

@ user170317:字典導致更乾淨的代碼。這就是他們被髮明的原因。抽象。我們可以一起取消複雜的數據結構,並用普通列表進行所有編程。但很快,人們無法看到樹木的森林。當需要字典時(按鍵存儲和檢索對象)使用字符串,在需要數組(存儲唯一對象)時設置何時以及在需要數組(排序對象)時設置數組。 – Regexident

0

試試這個:

[myArray containsObject:yourObject]; 

或者你可以將其過濾:

[myArray filterUsingPredicate:predicate]; 
+0

請仔細閱讀,我沒有對象,我只有描述字符串。請註明謂詞 – user170317

+0

對象說明??? NSLog(@「%@」,[myObject description]);打印對象...你是指這個描述? –

+0

是的,我有,[myObject描述]保存在另一個地方,我喜歡找到這個描述對象內數組 – user170317