在使用 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 实体不匹配