2016-02-01 2 views
0

У меня есть проект iOS. Я работаю над использованием Xcode7 и Swift2. У меня есть TableView, который извлекает array от NSCoding. Я начал работу, поэтому пользователь может изменить порядок TableViewCells в TableView. Однако мне нужно, чтобы он сохранил новый заказ после завершения работы пользователя и нажал кнопку «done», который является UIBarButtonItem. У меня есть значение в моем NSCodingobject под названием cellOrder. Я посмотрел here и увидел это для CoreData. Как я могу это сделать для NSCoding и где его сохранить?Сохранение переупорядочения ячеек TableView с использованием 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

Я решил, что лучший способ для меня состоял в том, чтобы сохранить detailsarray до 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() 

} 
Смежные вопросы