在使用 CoreData 的 TableView 中将行移至底部

Posted

技术标签:

【中文标题】在使用 CoreData 的 TableView 中将行移至底部【英文标题】:Move rows to bottom in a TableView which uses CoreData 【发布时间】:2013-01-05 10:11:43 【问题描述】:

在我的应用程序中,我有一个文件夹文件(一对多关系)。因此,当我打开我的应用程序时,我的 firstViewController 包含所有文件,当单击每个文件夹时,它会打开一个 tableViewController 显示该文件夹中的文件。

现在,每当我滑动任何行时,它都会移动到底行并且表格会相应更新,下一个滑动行将位于第一个滑动行的上方。

例如,目前如果我的表包含

0 1 2 3
A B C D

刷A后

0 1 2   3
B C D **A**

刷B后

0 1   2 3
C D **B A**

等等,

要实现这个功能,我还应该更新 NSOrderedSet 如下图所示

for (int i = 0; i < [self.folder.file count]; i++)
        
            File *file =  [self.folder.file objectAtIndex:i];
            if(file.completedStatus == false)
            
                m_position = i;
                m_finalIndexPath = [NSIndexPath indexPathForRow:i inSection:0];
            
        

        file.completedStatus = YES;

        id obj = [self.folder. file objectAtIndex:row];

        NSMutableOrderedSet *files = [self.folder.file mutableCopy];
        [files removeObjectAtIndex:row];
        [files insertObject:obj atIndex:m_position];


        NSIndexPath *currentIndexPath = [NSIndexPath indexPathForRow:row inSection:0];
        [m_tableView moveRowAtIndexPath:currentIndexPath toIndexPath:m_finalIndexPath];         
        self.folder.file = files;       
         
         [self.managedObjectContext save:nil];    
         [m_tableView reloadData];

这在此视图中运行良好,这里 self.folder 是用户单击的特定文件夹

现在我有另一个名为 TestViewController 的 ViewController ,其中我有一些文件对象,无论它们存在于哪个文件夹中。我已经用这些文件填充了这个 TestViewController 的表格,现在在这里,当我滑动单元格时,它们会改变颜色但不会像上面那样移动它们的位置

例如

0 1 2 3
A C B D

after swiping A and B

  0   1   2   3
**A** C **B** D

现在这里A可以属于文件夹1,B可以属于文件夹2,

当我关闭(关闭)这个 TestViewController 时,会发生什么

a) 默认情况下它会向我显示 fileViewController b) 文件 A 的颜色应该改变,它应该通过检查是否已经有任何滑动单元格移动到一个位置。如果是,则应放在其上方或底部。

c) 颜色 B 类似。

问候 兰吉特。

【问题讨论】:

如果我没听错,那么您是说您在 firstView 上管理它以移动到底部?为什么不能在 moreView 上也这样做? 嗨@Andy,moreView 是一个modelView,在这里我刷了一个项目,我的文件对象有一个名为刷卡状态的属性,当我刷卡并保存MOC 并关闭视图,我应该提前做什么,因为在 firstView 中,我滑动并获取行的位置。 那么,你需要在moreView上执行滑动的位置/单元格吗? 这不是我以前的问题。需要在moreView上移动的位置/单元格/索引路径吗? 嘿@Andy,你在吗? 【参考方案1】:

兰吉特,

关于你的问题,我无法理解你在这里问什么。所以,请提供一些其他细节。

要知道特定文件所属的文件夹,这很容易实现。

如果您在文件和文件夹之间设置了反向关系,只需访问该关系即可。

例如,如果反向关系称为toFolder,则可以像检索当前文件夹一样

Folder* currentFolder = currentFile.toFolder; // or access it through KVC

要创建反向关系,请看这里:Core data structure use multiple entities or not?

【讨论】:

请告诉我你的理解,以便我进一步解释清楚。 @Ranjit 你能说明如何更新有序集吗?移到行的底部是什么意思?谢谢。 我解决了我的问题。万岁:)。但是您对反向关系的回答为我提供了线索。我会尽快提供答案 @Ranjit 我很高兴听到这个消息。如果你想支持我的回答 ;-) 祝你有美好的一天。 答案在哪里,@Ranjit?

以上是关于在使用 CoreData 的 TableView 中将行移至底部的主要内容,如果未能解决你的问题,请参考以下文章

Swift 2:使用两个 CoreData 实体填充 TableView

如何使用coredata从上到下对tableview项目进行排序

如何在 Swift 中使用 MagicalRecord CoreData 删除 tableview 中的记录

在 TableView 中实现 CoreData 时遇到问题

在 CoreData 中更新项目不会刷新 tableView

使用 NSFetchedResultsController 在 TableView 上显示的元素列表与底层 CoreData 实体不匹配