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

时间:2015-07-05 21:47:08

标签: ios arrays swift uitableview core-data

我有一个自定义的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 个答案:

答案 0 :(得分:2)

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

来自Apple's NSSet Documentation

  

NSSet,NSMutableSet和NSCountedSet类声明了无序对象集合的编程接口。

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