iOS: How to find insertion position in sorted NSMutableArray

删除回忆录丶 提交于 2019-12-05 22:00:15

问题


I have an NSMutableArray of sorted objects, which are displayed in a UITableView.

I want to insert a new object into the array and update the table view - which requires the index of the newly inserted object.

I can't find any system message to tell me the correct insertion index into the array which I need to update the table view.

The best I can find is:

  • add new object
  • sort
  • using old copy of array, find the location of the new object (which requires searching)

or

  • write my own search for insertion position

Surely, there must be a message to find the insertion position in a sorted array? Or am I missing something obvious here?


回答1:


You can use indexOfObject:inSortedRange:options:usingComparator: method on the entire array. This method performs a binary search on a range that you pass, and gives you the insertion point when you use the NSBinarySearchingInsertionIndex option:

NSUInteger insPoint = [myArray
    indexOfObject:toInsert
    inSortedRange:NSMakeRange(0, [myArray count])
    options:NSBinarySearchingInsertionIndex
    usingComparator:^(id lhs, id rhs) {
        return // return the result of comparing two objects
    }
];


来源:https://stackoverflow.com/questions/19647329/ios-how-to-find-insertion-position-in-sorted-nsmutablearray

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!