2011-11-12 26 views
3

有没有人有使用NSOrderedSet在UITableView中进行排序的示例代码?在CoreData中使用NSOrderedSet重新排序UITableView

已阅读了许多关于重新排序的文章,但仍不明白如何在iOS5中执行此操作。

+0

http://stackoverflow.com/questions/2360938/uitableview-core-data-reordering这是非常有用的,但是... – Shmidt

回答

5

嗨,我是这样实现的。 “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]; 
} 
+0

嗨@Stephan,我使用FRC如何做到这一点使用FRC – Ranjit

+0

嗨@Ranjit据我所知,一个NSFetchedResultController不能访问NSMutableOrderedSet的任意顺序。我的意思是现在有办法取回它。你可以获取根对象,但我想这不是你想要的。因此,我在使用FRC属性解决方案而不是有序关系的项目中使用。 seconed的缺点是恕我直言iCloud不支持NSMutableOrderedSet。 – Stephan

+0

嗨@Stephan,如果我们使用一个属性来维护项目的顺序,那么假设我有100个项目,并且我删除了任何中间项目,我必须重新计算订单属性值,并且每做一次这样做都会很头疼 – Ranjit

相关问题