Shmidt
Shmidt

Reputation: 16684

Reordering UITableView with NSOrderedSet in CoreData

Does anyone has sample code for ordering in UITableView using NSOrderedSet?

Had read many articles about reordering, but still don't understand how to do this in iOS5.

Upvotes: 3

Views: 2008

Answers (1)

Stephan
Stephan

Reputation: 4263

Hi i implemented it like this. The "currentObject" is root object of the relationship and "subItems" the name of the ordered relationship in the model which is managed by the 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];
 }

Upvotes: 5

Related Questions