Ios 使用核心数据重新排列TableView单元格的顺序

Ios 使用核心数据重新排列TableView单元格的顺序,ios,arrays,swift,uitableview,core-data,Ios,Arrays,Swift,Uitableview,Core Data,我有一个自定义的UITableView类,用于处理表视图的动画,并使用表视图中显示的数组测试了以下代码 tableView.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in self.objectsArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtInd

我有一个自定义的UITableView类,用于处理表视图的动画,并使用表视图中显示的
数组测试了以下代码

tableView.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in

  self.objectsArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtIndex: fromIndexPath.row)

}
这在基本数组中可以正常工作,但实际上我想重新排列NSSet类型的托管对象。因此,在我的文件中,我声明了以下内容,它创建并返回表视图使用的Item类型的数组

tableView.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in

  self.objectsArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtIndex: fromIndexPath.row)

}
文件夹类函数:

 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的顺序,以便在应用程序重新加载时保存,有人有什么建议吗

根据定义,NSSet没有顺序,因此您没有保留NSSet顺序的本机方法。我不是说这是不可能的,但你不能按照你的想法去做

发件人:

NSSet、NSMutableSet和NSCountedSet类将编程接口声明为无序的对象集合


您需要将NSSet转换为NSMUTABLEARRY,并引用该数组而不是NSSet。

当您说将我的NSSet转换为可变数组时,您的意思是将我的类函数更改为强制转换为NSMUTABLEARRY吗?不,您不能仅强制转换它。您需要更改函数以使用NSMutableArray而不是NSSet。您可能会使用类似于
yourMutableArray=[mySet allObjects]
的方法初始化此数组,然后继续使用此数组进行排序谢谢您的帮助,我目前仍在处理您的建议,不幸的是遇到了问题,如果您想查看它,我已经发表了一篇不同的帖子。