CoreData:尝试排序

时间:2017-02-17 16:04:23

标签: swift core-data

我有两个实体:EntityA和(< - >>)EntityB

我正在尝试获取按EntityA

排序的所有EntityB.displayOrder
let request: NSFetchRequest<EntityA> = EntityA.fetchRequest()
  context.perform {

    do{
        var data = try self.context.fetch(request)
        let sort = NSSortDescriptor(key: "displayOrder", ascending: true)

        for (index,dat) in data.enumerated() {
          let entitiesB = (dat.entitiesB?.sortedArray(using: [sort]))
          data[index].entitiesB! = NSSet(array: entitiesB!)
        }

        self.testListTableVC.testData2 = data
        self.testListTableVC.tableView.reloadData()

        }
    }
}

排序似乎有效,但在将其设置回data时,它没有排序..

1 个答案:

答案 0 :(得分:0)

您正在排序entitiesB,然后将data[index].entitiesB设置为entitiesB,并将其设为NSSet。如果您在docs中了解了NSSet s,则会看到它们不是排序列表。

你基本上做了多余的工作,因为你正在对这个数组进行排序,然后将其作为未排序的NSSet

进行排序

我不知道您的模型设置如何,但您的data属性看起来需要testListTableVC.testData2。似乎任何类型的数组data都有,它有一个名为entitiesB的属性,它是NSSet。我建议你这样做,以便你可以使用Swift数组,这将保持井井有条。