我有两个数组:
var array = Array<Dictionary<String, Any>>()
var deletes = Array<Dictionary<String, Any>>()
我将删除附加到基于数组的索引:
for item in indexPaths {
deletes.append(self.array[item.item])
}
否则在我的代码中,我现在试图获取delete中项目的self.array索引:
for item in deletes {
let i = self.array.index(of: item)!
self.array.remove(at: i)
}
但是我发现这个错误让我
无法调用&#39;索引&#39;使用类型&#39;(of:[String: 任何])&#39;
我做错了什么?如何获取字典数组的索引?
答案 0 :(得分:1)
您无法在“任意值字典”
上使用.index(of
但请使用.index(Where
for item in deletes {
let i = array.index { (dic) -> Bool in
// return item[""] == dic[""] condition
}
if i != nil {
self.array.remove(at: i)
}
}
答案 1 :(得分:0)
for item in deletes {
if let i = self.array.index(of: item) {
self.array.remove(at: i)
} else {
// item is not member of array.
}
}
答案 2 :(得分:0)
我认为问题是删除数组的声明。
该数组中的字典必须具有String类型的键和值Any。
但是index(of:)
工作所需的Any不是可以清除的。因此,如果您可以保证您的价值总是可以保持,您应该更改您的声明,并且您可以使用index(of:)
方法。
更改为
var deletes = Array<Dictionary<String, AnyHashable>>()
这将起作用
for item in deletes {
let i = self.array.index(of: item)!
self.array.remove(at: i)
}