В Swift структура имеет тип значение .В цикле for или foreach элемент person является значением, и если бы он был изменяемым, вы бы изменяли только копию оригинала, а не оригинал, как вы намеревались.
Если вы действительно хотите обновляемую ссылку на struct внутри цикла, добавьте ключевое слово var, но помните, что вы обновляете копию, а не оригинал.
for var person in personArray {
person.age = 10 // updates a copy, not the original
}
В отличие от этого класс имеет тип reference , и в цикле каждый элемент является ссылкой на оригинал.При обновлении этого ссылочного значения теперь обновляется оригинал.
Измените определение Person на класс вместо struct, и оно будет работать как положено.Для полного объяснения см. https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html