10

我有一个排序对象的 NSMutableArray,它们显示在 UITableView 中。

我想在数组中插入一个新对象并更新表视图——这需要新插入对象的索引。

我找不到任何系统消息来告诉我正确的插入索引到我需要更新表视图的数组中。

我能找到的最好的是:

  • 添加新对象
  • 种类
  • 使用数组的旧副本,找到新对象的位置(需要搜索)

或者

  • 编写我自己的插入位置搜索

当然,必须有一条消息来查找排序数组中的插入位置?还是我在这里遗漏了一些明显的东西?

4

1 回答 1

27

您可以indexOfObject:inSortedRange:options:usingComparator:在整个数组上使用方法。此方法对您传递的范围执行二进制搜索,并在您使用NSBinarySearchingInsertionIndex选项时为您提供插入点:

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
    }
];
于 2013-10-29T00:07:34.857 回答