2017-02-17 64 views
0

我有两个实体:EntityA和(< - >>)EntityBCoreData:试图梳理

,我试图获取由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() 

     } 
    } 
} 

排序的所有EntityA排序似乎是工作,但是当它设置回data它不是排序..

回答

0

您正在排序entitiesB,然后设置data[index].entitiesB等于t o entitiesB铸造为NSSet。如果您在docs中阅读了NSSet,您会看到它们不是排序列表。

你基本上做多余的工作,因为你的排序这个数组,然后铸造它作为一个无序NSSet

我不知道你怎么会有你的模型设置,但它看起来像你需要这个data为您的testListTableVC.testData2属性。并且它看起来像是data的任何一种数组,它有一个名为entitiesB的属性,它是一个NSSet。我会建议使它可以使用Swift数组,这将保持有组织。

+0

如果我将使用安排:订购关系?通过将所有数据解析为一个swift数组看起来比直接使用数据库中的数据更有效。或者它可以根据请求本身进行排序? – HelloimDarius