我在tableview中添加了选项来对单元格进行排序/重新排序。我使用了本教程:http://www.ioscreator.com/tutorials/reordering-rows-table-view-ios8-swift。现在我想问一下如何保存细胞的分类/顺序?我还使用Core Data和fetchedResultsController
。
答案 0 :(得分:4)
向Core Data模型对象添加一个额外属性,用于存储排序顺序。例如,您可以拥有orderIndex
属性:
class MyItem: NSManagedObject {
@NSManaged var myOtherAttribute: String
@NSManaged var orderIndex: Int32
}
然后,在排序描述符中使用此属性作为获取结果控制器的获取请求:
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "orderIndex", ascending: true)]
最后,更新UITableViewDataSource方法中的orderIndex
属性:
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
if var items = fetchedResultsController.fetchedObjects as? [MyItem],
let itemToMove = fetchedResultsController.objectAtIndexPath(sourceIndexPath) as? MyItem {
items.removeAtIndex(sourceIndexPath.row)
items.insert(itemToMove, atIndex: destinationIndexPath.row)
for (index, item) in enumerate(items) {
item.orderIndex = Int32(index)
}
}
}