iOS - 重新排列CoreData中的项目

时间:2015-09-25 09:31:38

标签: ios objective-c arrays uitableview core-data

我有一个tableView和一个数组locationsArray。位置数组在我的CoreData中的数据viewDidLoad上填充。

我已经在tableView上实现了重新排序方法,并且工作正常但是我无法弄清楚如何将重新排序的数组保存回CoreData。我尝试删除CoreData中的所有内容,只保存新的reorderedArray。虽然这显然是非常昂贵的资源方面,但似乎只是以看似随机的顺序将元素加载回数组中。

是否有一种简单的方法可以解决这个问题,或者您是否可以按特定顺序将内容存储在CoreData中?

2 个答案:

答案 0 :(得分:2)

严格地说,不可能按特定顺序存储对象。您只能设置检索对象的顺序

从CoreData检索locationsArray时,您对其订单没有任何保证。 唯一的方法 - 在您的托管对象中添加字段,用于订购您的位置。

在检索时,您可以使用locationsArray = [locationsArray sortedArrayUsing<#WhateverYouNeed#>];

您也可以使用NSFetchRequest的sortDescriptors属性来实现此目的。它将从框中为您提供所需的行为。它的唯一缺点是,在这种情况下你的NSSortDescriptor不能被块定义,所以如果你使用一些复杂的方法进行排序,你需要用已经获取的数据对结果进行排序

答案 1 :(得分:0)

使用predicate对数组进行排序,或者从coredata中获取数组后使用

对其进行排序
 NSArray *sortedlocationarray = [filteredlocationarray sortedArrayUsingDescriptors:@[sortDescriptor]];

其中filteredlocationarray来自coredata。