字典数组的Swift索引

时间:2018-06-04 13:12:11

标签: ios swift

我有两个数组:

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;

我做错了什么?如何获取字典数组的索引?

3 个答案:

答案 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)
}