所以我有一个结构和字典,如下所示:
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中删除的结构,如果它确实包含它,它将被删除。
我希望我很清楚,提前谢谢!
答案 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]]