我不明白的阵列方法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