Swift2 使用NSCoding保存TableView单元格的重新排序
我有一个Swift2 使用NSCoding保存TableView单元格的重新排序,swift2,tableview,tableviewcell,nscoding,Swift2,Tableview,Tableviewcell,Nscoding,我有一个iOS项目,我正在使用Xcode7和Swift2。我有一个TableView,它从NSCoding获取一个数组。我已经启动了它,因此用户可以在TableView中重新排序TableViewCells。但是,一旦用户完成并单击“完成”,我需要它来保存新订单,这是一个UIBarButtonItem。我的NSCoding对象中有一个名为celorder的值。我查看并看到了CoreData。如何为NSCoding执行此操作,以及在何处保存 我为TableViewCell移动启动了以下代码: fu
iOS
项目,我正在使用Xcode7
和Swift2
。我有一个TableView
,它从NSCoding
获取一个数组。我已经启动了它,因此用户可以在TableView
中重新排序TableViewCells
。但是,一旦用户完成并单击“完成”,我需要它来保存新订单,这是一个UIBarButtonItem
。我的NSCoding
对象中有一个名为celorder
的值。我查看并看到了CoreData
。如何为NSCoding
执行此操作,以及在何处保存
我为TableViewCell
移动启动了以下代码:
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true}
func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
let itemToMove = details[fromIndexPath.row]
details.removeAtIndex(fromIndexPath.row)
details.insert(itemToMove, atIndex: toIndexPath.row)
}
details
是我保存数据的数组,使用NSCoding我决定最好的方法是在重新排序后将details
array
保存到NSUserDefaults
。我了解了如何将NSObject
转换为要保存的NSData
。我的moveRowatineXpath
部分的代码现在是:
func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
let itemToMove = details[fromIndexPath.row]
details.removeAtIndex(fromIndexPath.row)
details.insert(itemToMove, atIndex: toIndexPath.row)
// Archive NSObject and save as NSData
let myData = NSKeyedArchiver.archivedDataWithRootObject(details)
// NSUserDefaults Save for Reorder of cells
reportDefaults.setObject(myData, forKey: "savedReportListKEY")
reportDefaults.synchronize()
// NSCoding Save
saveReport()
}