我有键值类型的字典,例如:
var images = [String:UIImage]()
如果它是一个普通的字符串数组,我可以通过以下方式删除值:
images.removeAtIndex(indexPath.row)
但是如果它的参数类型是字典,那么它会给我以下错误:
Cannot convert value of type 'Int' to expected argument type 'DictionaryIndex'.
如何从给定索引处的此类数组中删除 remove?谁能帮我解决这个问题?
最佳答案
您只需删除带有 String
键的项目。
images.removeValueForKey("someString")
编辑: 根据评论:
我不是很明白你的意思。我要重新创建您的场景。但我将使用 Strings
而不是 UIImage's
,因为我是在命令行上执行此操作的。
1> var images = [String:String]()
images: [String : String] = 0 key/value pairs
2> images["one"] = "someting 1 2 3"
3> images["two"] = "something else 4 5 6"
4> images
$R0: [String : String] = 2 key/value pairs {
[0] = {
key = "one"
value = "someting 1 2 3"
}
[1] = {
key = "two"
value = "something else 4 5 6"
}
}
现在,根据您的示例,我想删除一个项目。
5> images.removeValueForKey("one")
$R1: String? = "someting 1 2 3"
6> images
$R2: [String : String] = 1 key/value pair {
[0] = {
key = "two"
value = "something else 4 5 6"
}
}
编辑2:
在阅读了您的赞扬和示例代码后,我认为您误解了您所拥有的内容。
你有一个键字典,它是字符串。与 UIImages 一对一配对。
因此,如果您根据键删除一个项目,则会删除其唯一的属性,即图像。
现在,既然你在原来的问题中说了数组这个词,我想这就是你想要的。
1> var images = [String:[String]]()
对你来说,它将是 `var images = String:[UIImage]
现在每个键都有一组图像。
images: [String : [String]] = 0 key/value pairs
1> images["one"] = [String]
2> images["one"]!.append("first")
3> images
$R0: [String : [String]] = 1 key/value pair {
[0] = {
key = "one"
value = 1 value {
[0] = "first"
}
}
}
4> images["one"]!.append("second")
5> images
$R1: [String : [String]] = 1 key/value pair {
[0] = {
key = "one"
value = 2 values {
[0] = "first"
[1] = "second"
}
}
}
6> images["one"]!.removeAtIndex(0)
$R2: String = "first"
7> images
$R3: [String : [String]] = 1 key/value pair {
[0] = {
key = "one"
value = 1 value {
[0] = "second"
}
}
}
关于ios - 如何在 Swift 中对字典类型的数组应用 removeAtIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35809786/