使用 Core Data 重新排列 TableView 单元格的顺序
Posted
技术标签:
【中文标题】使用 Core Data 重新排列 TableView 单元格的顺序【英文标题】:Rearranging order of TableView cells using Core Data 【发布时间】:2015-07-05 21:47:07 【问题描述】:我有一个自定义 UITableView 类来处理表格视图的动画,并且已经使用在表格视图中显示的Array
测试了以下代码。
tableView.didMoveCellFromIndexPathToIndexPathBlock = (fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in
self.objectsArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtIndex: fromIndexPath.row)
这适用于基本数组,但我实际上想重新排列 NSSet 类型的托管对象。因此,在我的文件中,我声明了以下内容,它创建了返回表视图使用的 Item 类型的数组。
文件夹类函数:
func itemArray() -> [Item]
let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
return iist.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
表格视图控制器声明
var itemArray = [Item]()
itemArray = folder.itemArray() //class function to return a NSArray of the NSSET [Item]
我正在尝试这样做,因此在重新排列单元格时它会更改 NSSet 的顺序,以便在应用程序重新加载时保存它,有人有什么建议吗?
【问题讨论】:
【参考方案1】:根据定义,NSSet 没有顺序,因此没有本地方法可以让您保持 NSSet 的顺序。我不是说不可能,但你不能按照你的想法去做。
来自Apple's NSSet Documentation:
NSSet、NSMutableSet 和 NSCountedSet 类声明了到无序对象集合的编程接口。
您需要将 NSSet 转换为 NSMutableArray 并引用该数组而不是 NSSet。
【讨论】:
当您说将我的 NSSet 转换为 Mutable Array 时,您是指将我的类函数转换为 NSMutableArray 吗? 不,你不能只是投射它。您需要更改您的函数以使用 NSMutableArray 而不是 NSSet。您可能会使用yourMutableArray = [mySet allObjects]
之类的东西初始化此数组,然后继续使用此数组进行排序
感谢您的帮助,我目前仍在处理您的建议,不幸的是遇到了问题,如果您想查看它,请发表不同的帖子。 ***.com/questions/31257572/…以上是关于使用 Core Data 重新排列 TableView 单元格的顺序的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionview 在使用 Core Data 保存实体后重新加载数据
使用 Fetch Results Controller 对 Core Data 中的单元格重新排序