Я пытаюсь научиться быстро. Когда я делаю:Как изменить один элемент в массиве с настраиваемым типом
var myIntArray = [Int](count: 3, repeatedValue: 0)
myIntArray[0] = 1
myIntArray[1] = 11
myIntArray[2] = 111
// prints "my array: [1, 11, 111]"
NSLog("my int array: [%d, %d, %d]", myIntArray[0], myIntArray[1], myIntArray[2])
Он работает, как ожидалось, но когда я оберните Int в классе, как это:
class Foo {
var bar = 0
}
var myWrappedIntArray = [Foo](count: 3, repeatedValue: Foo())
myWrappedIntArray[0].bar = 1
myWrappedIntArray[1].bar = 11
myWrappedIntArray[2].bar = 111
// prints "my array: [111, 111, 111]"
NSLog("my wrapped int array: [%d, %d, %d]", myWrappedIntArray[0].bar, myWrappedIntArray[1].bar, myWrappedIntArray[2].bar)
кажется, изменить весь массив при попытке изменить один элемент. Что я здесь делаю неправильно?
Возможно, мой аргумент для 'repeatValue' создает один экземпляр' Foo' и заполняет массив указателями на этот экземпляр? Но как это исправить? – Kevin
Почему вы не используете «print» вместо «NSlog»? –
@RashmiRanjanmallick Поскольку я привык использовать NSLog в разработке iOS, это действительно актуально для этой проблемы? – Kevin