У меня есть массив объектов, как это:Удалить сопоставленный элемент из массива объектов?
var myArr = [
MyObject(name: "Abc", description: "Lorem ipsum 1."),
MyObject(name: "Def", description: "Lorem ipsum 2."),
MyObject(name: "Xyz", description: "Lorem ipsum 3.")
]
Я знаю, что я могу найти совпадающий элемент вроде этого:
var temp = myArr.filter { $0.name == "Def" }.first
Но теперь не могу удалить его из исходного myArr
? Я надеялся, что filter.first
может как-нибудь вернуть индекс, чтобы использовать removeAtIndex
. Или еще лучше, я хотел бы сделать что-то вроде этого:
myArr.removeAll { $0.name == "Def" } // Pseudo
Любые идеи?
Что случилось с 'myArr = myArr.filter {$ 0.name! =" Def "}'? – matt
Потому что это заставляет меня создавать новую переменную. Я хочу изменить существующую переменную 'myArr'. – TruMan1
Нет, нет. 'myArr' все еще' myArr'. И это тип значения; вы не можете мутировать его на месте! Вы всегда будете создавать новый массив, даже если вы напишете мутирующий метод 'removeAll'. – matt