2013-10-29 26 views
8

içinde nasıl bulunur? UITableView'de görüntülenen NSMutableArray adlı bir nesne var.iOS: Sıralama konumu NSMutableArray

Diziye yeni bir nesne eklemek ve yeni eklenen nesnenin dizinini gerektiren tablo görünümünü güncellemek istiyorum.

Tablo görünümünü güncellemem gereken diziye doğru ekleme dizinini bildiren bir sistem iletisi bulamıyorum.

bulabilirim en iyisi:

  • , dizinin eski kopyasını kullanarak yeni nesne
  • sıralama
  • ekleyin (arama gerektirir) yeni nesnenin konumunu
bulmak

veya

  • ins ertion position

Şüphesiz, sıralanmış bir dizide ekleme konumunu bulmak için bir ileti olmalıdır. Yoksa burada bariz bir şeyi mi özlüyorum?

cevap

24

Dizinin tamamında indexOfObject:inSortedRange:options:usingComparator: yöntemini kullanabilirsiniz. Bu yöntem geçmesi bir dizi ikili arama gerçekleştirir ve size NSBinarySearchingInsertionIndex seçeneğini kullanın ekleme noktasını verir:

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

Serin. Bu yöntemi bilmiyordum. Paylaşım için teşekkürler. (oy) Gelişimdeki göreli bir eski zamanlayıcı olarak, Kakao çerçevelerinin derinliği ve genişliğine hayran kalmaya devam ediyorum. –