2017-08-02 36 views
0

假設我有一個Core Data對象數組。如何重排核心數據對象數組並重新排列其在Swift 3中的Int屬性

let array = [Object1, Object2, Object3, Object4, Object5, Object6, Object7] 

每個對象都有一個名爲indexValue屬性:Int64的

首先這些對象有indexValue屬性的這些值:

Object1 has indexValue = 1 
Object2 has indexValue = 2 
Object3 has indexValue = 3 
Object4 has indexValue = 4 
Object5 has indexValue = 5 
Object6 has indexValue = 6 
Object7 has indexValue = 7 

現在讓我們說,我刪除Object3和Object6例如,和現在我的數組中的對象具有以下索引值

Object1 has indexValue = 1 
Object2 has indexValue = 2 
Object4 has indexValue = 4 
Object5 has indexValue = 5 
Object7 has indexValue = 7 

刪除後,我想通過以下方式來重新排序該數組: 我想改變這個數組的indexValue屬性爲以下狀態:

Object1 has indexValue = 1 
Object2 has indexValue = 2 
Object4 has indexValue = 3 
Object5 has indexValue = 4 
Object7 has indexValue = 5 

的主要困難是保持舊秩序,同時給予新的值的indexValue。我正在尋找一種算法,在Swift 3中完成這項工作。

+1

所以,你希望indexValue獲取數組中每個對象的真實索引值? – nbloqs

+0

@nbloqs'i ++'在Swift 3中不起作用,'indexValue'是'Int64'和基於1的。 – vadian

回答

0

簡單的解決方案,使用此函數並傳遞有序 - 缺少索引 - 數組。

您必須將MyObject替換爲包含indexValue屬性的實際自定義類型,並添加代碼以保存託管對象上下文。

func reindex(items : [MyObject]) 
{ 
    for (index, item) in items.enumerated() { 
     item.indexValue = Int64(index + 1) 
    } 
    // save the context 
} 
+0

非常感謝,那正是我一直在尋找的! – Adelmaer