Изменение порядка UITableView с помощью NSOrderedSet в CoreData

Есть ли у кого-нибудь образец кода для заказа в UITableView с помощью NSOrderedSet?

Прочитал много статей о переупорядочивании, но до сих пор не понимаю, как это сделать в iOS5.


person Shmidt    schedule 12.11.2011    source источник
comment
stackoverflow.com/questions/2360938/ Это очень полезно , но...   -  person Shmidt    schedule 13.11.2011


Ответы (1)


Привет, я реализовал это вот так. «CurrentObject» - это корневой объект отношения, а «subItems» - имя упорядоченного отношения в модели, которой управляет UITableViewController.

 - (void)moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
 {

   NSMutableOrderedSet* orderedSet = [self.currentObject mutableOrderedSetValueForKey:@"subItems"];

   NSInteger fromIndex = fromIndexPath.row;
   NSInteger toIndex = toIndexPath.row;

   // see  http://www.wannabegeek.com/?p=74
   NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:fromIndex];

   if (fromIndex > toIndex) {
    // we're moving up
    [orderedSet moveObjectsAtIndexes:indexes toIndex:toIndex];
   } else {
    // we're moving down
    [orderedSet moveObjectsAtIndexes:indexes toIndex:toIndex-[indexes count]];
   }

   [self.dataStore saveObjectContext];
 }
person Stephan    schedule 26.01.2012
comment
Привет @Stephan, я использую FRC, как это сделать с помощью FRC - person Ranjit; 02.11.2012
comment
Привет @Ranjit, насколько мне известно, NSFetchedResultController не имеет доступа к произвольному порядку NSMutableOrderedSet. Я имею в виду, что теперь есть способ его получить. Вы можете выполнить выборку для корневого объекта, но я думаю, это не то, что вам нужно. Поэтому в проектах, где я использую FRC, я использую атрибутное решение, а не упорядоченное отношение. Второй недостаток - IMHO iCloud еще не поддерживает NSMutableOrderedSet. - person Stephan; 03.11.2012
comment
Привет @Stephan, если мы используем атрибут для поддержания порядка элементов, то предположим, что у меня есть 100 элементов, и я удаляю любой из средних элементов, мне нужно пересчитывать значения атрибутов порядка, и делать это каждый раз будет головной болью - person Ranjit; 03.11.2012
comment
@Ranjit это зависит от того, как вы это реализуете. Но это тема данного вопроса. Взгляните на мой ответ в stackoverflow.com/questions/1077568 и мою реализацию ref - person Stephan; 10.11.2012