2017-02-17 43 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