我有这个数组扩展来从数组中删除对象。
extension Array where Element : Equatable {
mutating func removeObject(object : Generator.Element) {
if let index = self.indexOf(object) {
self.removeAtIndex(index)
}
}
}
我定义了一个词典:
var itemsSelected: [NSIndexPath: Item] = [:]
Item是一个对象,当我尝试将它从字典中删除时:
self.itemsSelected.values.array.removeObject(item)
我收到以下错误:
Immutable value of type [Base.Generator.Element] only has mutating members named 'removedObject'
如何从字典中删除对象? 我正在使用Xcode 7 beta 4。
答案 0 :(得分:2)
itemsSelected.values.array
返回一个(不可变的)数组
字典值,你不能用它来修改原文
字典。
要从字典中删除给定的值,您可以定义一个
Swift 2中类似的Dictionary
扩展名:
extension Dictionary where Value : Equatable {
mutating func removeValue(value : Value) {
if let index = self.indexOf({ $0.1 == value }) {
self.removeAtIndex(index)
}
}
}
此处indexOf()
将字典视为键/值序列
对
但请注意,如果字典中的多个键具有相同的值,那么
这将只删除其中一个。删除所有键/值对
使用给定值,您可以将if let
替换为while let
:
extension Dictionary where Value : Equatable {
mutating func removeValue(value : Value) {
while let index = self.indexOf({ $0.1 == value }) {
self.removeAtIndex(index)
}
}
}