阅读了超过10篇使用Obj-C编写的文章& Swift。 我仍然不知道如何使用CoreData重新排列列表中的行。在Swift 2中使用CoreData的moveRowAtIndexPath
因为我知道如何添加一个新的对象,以及如何删除一个我试图合并在一起都和我moveRowAtIndexPath
方法成为
let prefToMove = mainVC.user.prefs[fromIndexPath.row] as! Pref
var prefs = mainVC.user.prefs.mutableCopy() as! NSMutableOrderedSet
prefs.addObject(prefToMove)
mainVC.user.prefs = prefs.copy() as! NSOrderedSet
// managed object context saving
var error: NSError?
do {
try managedContext!.save()
} catch let error1 as NSError {
error = error1
print("Could not save: \(error)")
}
tableView.insertRowsAtIndexPaths([toIndexPath], withRowAnimation: .None)
prefs = mainVC.user.prefs.mutableCopy() as! NSMutableOrderedSet
prefs.removeObjectAtIndex(fromIndexPath.row)
mainVC.user.prefs = prefs.copy() as! NSOrderedSet
managedContext.deleteObject(prefToMove)
// managed object context saving
do {
try managedContext.save()
} catch let error1 as NSError {
error = error1
print("Could not save: \(error)")
}
// Delete the row from the data source
tableView.deleteRowsAtIndexPaths([fromIndexPath], withRowAnimation: .None)
tableView.reloadData()
但是,这是行不通的。删除部分工作但插入失败。 有人可以给我任何帮助吗?
只是一句话:如果你使用英文名称作为变量,方法等,更多的读者会理解你的代码。 –
@MartinR按要求修改。感谢您的建议 – Nicholas