我有一个tableView和一个数组locationsArray
。位置数组在我的CoreData中的数据viewDidLoad
上填充。
我已经在tableView上实现了重新排序方法,并且工作正常但是我无法弄清楚如何将重新排序的数组保存回CoreData。我尝试删除CoreData中的所有内容,只保存新的reorderedArray。虽然这显然是非常昂贵的资源方面,但似乎只是以看似随机的顺序将元素加载回数组中。
是否有一种简单的方法可以解决这个问题,或者您是否可以按特定顺序将内容存储在CoreData中?
答案 0 :(得分:2)
严格地说,不可能按特定顺序存储对象。您只能设置检索对象的顺序
从CoreData检索locationsArray
时,您对其订单没有任何保证。
唯一的方法 - 在您的托管对象中添加字段,用于订购您的位置。
在检索时,您可以使用locationsArray = [locationsArray sortedArrayUsing<#WhateverYouNeed#>];
。
您也可以使用NSFetchRequest的sortDescriptors属性来实现此目的。它将从框中为您提供所需的行为。它的唯一缺点是,在这种情况下你的NSSortDescriptor不能被块定义,所以如果你使用一些复杂的方法进行排序,你需要用已经获取的数据对结果进行排序
答案 1 :(得分:0)
使用predicate
对数组进行排序,或者从coredata中获取数组后使用
NSArray *sortedlocationarray = [filteredlocationarray sortedArrayUsingDescriptors:@[sortDescriptor]];
其中filteredlocationarray来自coredata。