2011-07-25 137 views
1

我有以下2個數組。數組A具有10個ID,另一個數組B具有300個ID和所有相應的數據。從另一個陣列查詢數組

我想要檢索的B用的ID,其在陣列A中註明,所有數據

我可以只循環在數組A的每個條目數組B中的所有條目,但是這看起來有點重爲了這麼簡單的任務。這種情況下最好的解決方案是什麼?

Thnx!

回答

1

可能use a predicate(a,b是你的陣列):

NSPredicate* filter = [NSPredicate predicateWithFormat: @"self IN %@", a]; 
NSArray* result = [b filteredArrayUsingPredicate: filter]; 

儘管如此,如果在你的數組對象是像串簡單的事情,它可能只工作。

+0

非常好,這就是要找的東西 – Jos

0

我不明白你將如何去做,否則,如果你正在使用數組。訪問正確元素的唯一方法是循環訪問數組。

+0

請停止製作微小的標題編輯,這會導致語法錯誤的標題。如果您要進行大量批量修改,則需要多花2秒鐘,並在剝離假標籤後大寫標題,並確保結果標題真正有意義。 – meagar

+0

當然,我會這樣做。謝謝。雖然 –

+0

確保語法的第一個字是大寫,但我不明白語法是如何變得更加不正確。如果可能,請將標題轉爲問題。而不是離開**如何做 **,使它**我怎樣才能 **(注意問號)。還要掃描問題的主體,看看是否存在明顯的錯誤,刪除簽名/標記行(如果存在),在適當的位置大寫「i」等等。許多編輯都很好,但您應該專注於使問題與您一樣可以,而不是讓其他人去做大量的編輯工作。 – meagar

2

如果你不需要一個有序數組,你可以切換到一個哈希表(例如NSSet),它具有更快的查找時間(對O(1)的強偏向)。否則,您必須遍歷整個數組並檢查其所有成員。

1

當您填充數組B時,您可以改爲使其成爲dictionary。假設idsunique,那麼您可以從數組B中獲得數組A中鍵的對象的值。這將避免循環並且與哈希表等同。

返回的值將具有特定unique id的相應數據。