Мне нужно искать каждый объект в массиве «героев» для каждого героя (abathur, chromie и т. Д.), У которого есть элемент в синергетическом массиве, равном «Xul», . («Xul» в конечном итоге будет изменен на переменный ввод пользователем). Затем мне нужно увеличить свойство pickValue для каждого из них.Поиск массива внутри массива объекта
Таким образом, в этом примере поиск будет соответствовать хромированию и увеличить его значение выбора.
Этот фильтр ниже позволяет мне помещать согласованные элементы в другой массив, но я не думаю, что фильтр будет работать для того, что я хочу, потому что мне нужно сохранить массив «героев» в такт и просто увеличить свойство «pickValue»
let filteredHeroes = heroes.filter({ $0.synergy.contains("Xul") })
Я с ума сошел, ища, как это сделать, и я не могу его найти. Учебник, за которым я следил, также не затрагивает этого. Ниже приведена другая соответствующая информация.
class Hero{
var name: String
var role: String
var synergy: [String]
var strong: [String]
var weak: [String]
var pickValue = 0
init(name: String, role: String, synergy: [String], strong: [String], weak: [String]){
self.name = name
self.role = role
self.synergy = synergy
self.strong = strong
self.weak = weak
}
}
// there are about 50 of these "heroes"
var abathur = Hero(name: "Abathur", role: "Ranged Specialist", synergy: ["Illidan", "Chromie"], strong: ["Tracer", "Murky"], weak: ["Zeratul", "Nova"])
var chromie = Hero(name: "Chromie", role: "Ranged Assassin", synergy: ["Xul", "Johanna"], strong: ["Abathur", "Zagara"], weak: ["Tracer", "Greymane"])
var heroes = [Hero]()
heroes.append(abathur) // appended all heroes
heroes.append(chromie)
Конечным результатом того, что я пытаюсь сделать, будет массив «героев» с абатуром, у которого есть pickValue 0 и chromie, у кого есть pickValue 1. Все остальное должно быть одинаковым. – Apple
'filter' не изменяет исходную коллекцию, он просто создает новый массив с соответствующими элементами. –