2016-06-21 49 views
0

所以我看起來一個結構和詞典這樣的:夫特刪除元素,然後從數組中刪除相同元件字典的內部

struct minStruct { 

var labelText:String? 
var descText:String? 
var imaginator:UIImage? 
var rea:String? 

var url:NSURL?} 

var dict = [String:[minStruct]]() 

因此,我與字典值作爲結構數組。在我的應用程序創建字典裏面的所有結構的數組,以便能夠顯示一個的tableView,這是由該代碼所做的結構:

let dictValues = Array(dict.values) 
let dictFlat = Array(dictValues.flatten()) 

新陣列dictFlat用於填充的tableView,因爲它包含原始字典中包含的每個結構。如果我想從tableView中刪除結構,我當然會將其從數組dictFlat中移除,但是我需要從原始字典(dict)中刪除相同的結構以實現我想要的結果。所以我的問題是如何從字典詞典中刪除從數組dictFlat中刪除的相同結構。爲了澄清,你可能在你這個例子:

dict = ["Food":[minStruct(labelText: "this is a string", descText: "Also a string", imaginator: UIImage(named: "image-name")!, rea: "also a string", url: NSURL(string: "https://www.google.com")]] 

現在dictFlat將包含上述字典裏面顯示的結構,現在我想刪除這兩個結構。使用swipe從tableView中刪除,將被刪除的唯一結構是dictFlat中的一個(使用indexPath刪除,就像通常從tableView刪除時一樣)。現在我想從原始字典(dict)中刪除從dictFlat和tableView中刪除的相同項目。所以我想要的是檢查dict是否包含從dictFlat中刪除的結構,如果它包含它,它將被刪除。

我希望我已經夠清楚了,謝謝!

回答

0

有什麼問題?看到的例子,我用那裏[Int]作爲一個值,但它可能是其他任何東西

var dict:[String:[Int]] = [:] 

let arr0 = [1,2,3,4,5] 
let arr1 = [2,3,4,5,6] 

dict["arr0"] = arr0 
dict["arr1"] = arr1 

// working copy 
var arr = dict["arr0"] ?? [] 

// remove one value 
arr.removeAtIndex(2) 

// update your dictionary 
dict["arr0"] = arr 

print(dict) // ["arr1": [2, 3, 4, 5, 6], "arr0": [1, 2, 4, 5]] 
+0

幾乎我所需要的,我認爲是不夠清楚。我想要從數組中刪除(你叫arr的那個)結構(或者你的情況下是int)。在得到那個特定的結構體之後,我想檢查它是否存在於dict中,如果存在,我想刪除它。我想補充一點,我對swift很陌生,所以我對這些方法並不熟悉,但我想要一個方法來檢查字典是否包含某個結構,並且如我所說,如果它包含它,我希望它被刪除。對於我不清楚的解釋方式感到抱歉。 –

+0

此外,我不希望結構被刪除的數組只是來自字典中的一個值的數組(不僅是結構數組之一)。看看我創建數組dictFlat的問題,你可能明白我的意思。 –

+0

markus不要做任何不必要的工作!你的表源是一個arr。如果您修改了arr,請更新您的字典。這就是你所需要的。你不需要檢查什麼...... – user3441734