2016-06-21 48 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