我不明白的陣列方法indexOfObject:inSortedRange:options:usingComparator:
二進制搜索
更具體地說,indexOfObject
財產。
根據文檔傳遞的值應該是An object for which to search in the array.
但這沒有任何意義。如果我已經有了對象的引用,爲什麼我會在數組中搜索它?這是否意味着對象類型?
我有一個對象數組,我擁有的是這些對象的屬性。即。我有一系列的汽車,當我有車號爲12345時,我需要找到車對象。
我會傳入indexOfObject
屬性的方法麼?這裏是我想要
MyCarObject *searchObject;
NSUInteger findIndex = [sortedArray indexOfObject:searchObject
inSortedRange:searchRange
options:NSBinarySearchingFirstEqual
usingComparator:^(id obj1, id obj2)
{
return [obj1 compare:obj2];
}];
,但是這顯然是不會得到一個基於ID的對象..它看起來像它要給我的財產的索引我已經有一個參考,這似乎毫無意義....
如果這不是正確的方法,那麼我應該使用什麼?我需要在對象數組上使用二進制搜索並提取對該對象的引用。我擁有的只是一個財產來比較。
filteredArrayUsingPredicate導致大量減速,因爲它從數組的開始到結束搜索。我需要一個二進制搜索非常大的數組。因此我試圖使用此方法 – JMD
因此,您可以確保始終按Car ID排序,然後只需使用二進制搜索算法編寫小型方法來查找對象。長話短說:如果你對'NSPredicate'不滿意,我認爲你必須自己編寫這個 –
的實現,那麼這就是我必須要做的。謝謝 – JMD