我有一个iOS
项目,我正致力于使用Xcode7
和Swift2
。我有TableView
从array
获取NSCoding
。我启动了它,因此用户可以重新排序TableViewCells
中的TableView
。但是,一旦用户完成并点击“完成”,我就需要它来保存新订单。这是一个UIBarButtonItem
。我的NSCoding
object
中有一个名为cellOrder
的值。我看了here并看到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
。
答案 0 :(得分:0)
我认为对我来说最好的方法是在重新排序完成后将details
array
保存到NSUserDefaults
。我看到here如何将NSObject
转换为NSData
进行保存。我的moveRowAtIndexPath
部分的代码现在是:
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()
}