Swift从数组中删除元素,然后从字典内的数组中删除相同的元素

时间:2016-06-21 23:01:26

标签: dictionary swift2 xcode7

所以我有一个结构和字典,如下所示:

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)中删除相同的结构来实现我想要的。所以我的问题是如何从字典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将包含上面dict中显示的结构,现在我想从两者中删除该结构。使用滑动从tableView中删除,唯一要删除的结构是dictFlat内部的结构(使用indexPath删除就像从tableView中删除时一样)。现在我想删除从dictFlat中删除的相同项目以及从原始字典(dict)中的tableView中删除的项目。所以我想要的是检查dict是否包含从dictFlat中删除的结构,如果它确实包含它,它将被删除。

我希望我很清楚,提前谢谢!

1 个答案:

答案 0 :(得分: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]]