我有一个自定义的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的顺序,以便在应用程序重新加载时保存,是否有人有任何建议?
答案 0 :(得分:2)
根据定义,NSSets没有订单,因此您没有本机方式来保留NSSet的顺序。我不是说这是不可能的,但你不能按照你的想法去做。
来自Apple's NSSet Documentation:
NSSet,NSMutableSet和NSCountedSet类声明了无序对象集合的编程接口。
您需要将NSSet转换为NSMutableArray并引用该数组而不是NSSet。