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?
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