2013-10-29 15 views
8

Tôi có NSMutableArray của các đối tượng được sắp xếp, được hiển thị trong UITableView.iOS: Cách tìm vị trí chèn trong NSMutableArray được sắp xếp

Tôi muốn chèn đối tượng mới vào mảng và cập nhật chế độ xem bảng - yêu cầu chỉ mục của đối tượng mới được chèn.

Tôi không thể tìm thấy bất kỳ thông báo hệ thống nào để cho tôi biết chỉ mục chèn chính xác vào mảng mà tôi cần cập nhật chế độ xem bảng.

Điều tốt nhất tôi có thể tìm thấy là:

  • thêm đối tượng mới
  • loại
  • sử dụng bản sao cũ của mảng, tìm vị trí của các đối tượng mới (mà đòi hỏi phải tìm kiếm)

hoặc

  • viết tìm kiếm của riêng tôi vị trí ertion

Chắc chắn, phải có thông báo để tìm vị trí chèn trong một mảng được sắp xếp? Hoặc tôi thiếu một cái gì đó hiển nhiên ở đây?

Trả lời

24

Bạn có thể sử dụng phương pháp indexOfObject:inSortedRange:options:usingComparator: trên toàn bộ mảng. Phương pháp này thực hiện tìm kiếm nhị phân trên phạm vi bạn vượt qua và cung cấp cho bạn điểm chèn khi bạn sử dụng tùy chọn 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 
    } 
]; 
+3

Làm mát. Tôi không biết về phương pháp đó. Cám ơn vì đã chia sẻ. (bình chọn) Là một bộ đếm thời gian tương đối cũ trong phát triển, tôi tiếp tục ngạc nhiên bởi chiều sâu và bề rộng của các khuôn khổ Cocoa. –

Các vấn đề liên quan