2009-07-16 21 views
17

我的目標C兩個數組,我需要查找指數東西,所以我可以在同一個地方插入。例如,可以說我有一個「名字數組」和一個「年齡數組」。我如何知道「名字數組」中的「charlie」是什麼,所以我知道在「年齡」數組中插入他的年齡的位置?如何確定Objective C中的數組索引?

謝謝

回答

38

-[NSArray indexOfObject:]似乎是合乎邏輯的選擇。

+0

是的,它會扔掉,幸虧我找不到,在NSMutableArray裏類引用。 – Xcoder 2009-07-16 02:15:15

+4

是的,NSMutableArray文檔只包含與變異數組有關的方法。檢查超類文檔也是值得的。 – Chuck 2009-07-16 02:41:53

4

你可能只是想用一個NSDictionary也是如此,如果你正在做基於字符串的查找。

6

在可可,平行陣列是劫數毀滅的路徑。你不能用Bindings有效地使用它們,所以你不得不寫很多膠水代碼,就好像Bindings不存在一樣。而且,在開始實施之前,您可能會打算獲得任何未來的AppleScript/Scripting Bridge支持。

正確的方法是創建一個具有nameage屬性的模型類,並擁有該類的實例的單個數組。然後,爲了找到通過名稱或年齡的項,使用NSPredicate到陣列過濾,並indexOfObjectIdenticalTo:從主陣列中的過濾陣列找到每個項的索引。

indexOfObject:indexOfObjectIdenticalTo:之間的區別在於,前者將發送isEqual:消息來確定每個對象是否爲它找一個,而後者只會找你傳遞的特定對象。因此,你可以使用indexOfObject:用一個不在數組中但等於一個的對象,以便在數組中找到相等的對象。