Я планирую использовать переменную объекта класса для захвата введенных пользователем наборов данных в повторяющихся циклах и когда набор данных будет завершен, добавьте это в массив, содержащий все эти переменные класса. Простой пример кода в игровой площадки:Как построить массив в swift re-using переменная
class Example {
var a = 1
var b = 5
}
var exArray = [Example]() // this is the array holding the class variables
var anExample = Example() // default-init the "re-usable" variable
exArray.append(anExample)
exArray[0].a // results in 1 as expected
exArray[0].b // results in 5 as expected
exArray.count // 1 as expected
// now changing the re-usable variable properties with new user entered data
anExample.a = 3
anExample.b = 7
// appending the altered variable
exArray.append(anExample)
exArray[0].a // shows 3 where I still expect 1
exArray[0].b // shows 7 where I expect 7
exArray.count // shows 2 as expected
кажется массив содержит переменную сам (указатель?) Не копию переменной, так что постоянно меняется в пределах массива. Любые идеи о том, как я могу «перезагрузить» переменную класса без изменения члена массива?
Создайте новый экземпляр примера перед установкой значения новых атрибутов. 'anExample = Example() anExample.a = 3 anExample.b = 7' – Francescu
Спасибо, Франческу. Чтобы создать новый экземпляр, я должен был бы присвоить переменной другое имя, поэтому не может получить доступ к одной и той же переменной имени. Если я использую одно и то же имя, я не могу «повторить» его, поэтому изменение свойств, таких как a или b, по-прежнему будет изменять исходный объект класса anExample даже в качестве члена массива - это то, что я не хочу – swiftML
You может делать то, что я вам говорил. Но если вы не хотите создавать другой экземпляр в пределах одного и того же имени переменной, как я предложил вам следует использовать Struct вместо класса. Как указано в справочной системе Swift, Struct передается через их значения, а классы передаются через их ссылки. – Francescu