对象数组还有对象的内部数组

时间:2018-04-24 08:15:48

标签: ios arrays swift

我的班级

class ScoreModel {
    var playerId: Int?
    var holeScores: [HoleScore]?
}

其他班级

class HoleScore {
    var holeScore: Int?
}

我有这些类一个是ScoreModel类,可以有HoleScore的对象数组

let scoreList = [ScoreModel]()
scoreList[0].holeScores![0].holeScore = 3

当我为holeScore更新或更改scoreList[0].holeScores[0]时,会更改所有scoreList[forAllIndexes].holeScores[0]。我只想更改外部数组的给定索引的内部数组prams,但它会在更新时更改所有holeScore值。

2 个答案:

答案 0 :(得分:2)

这会附加同一个对象,因此一个中的更改会反映给其他人

var item = HoleScore()

for i in 0...5
{
    item. holeScore = i

    scoreList[0].holeScores.append(item)
}

//

这会附加不同的对象,因此一个中的更改不会反映给其他人

for i in 0...5
{
    var item = HoleScore()

    item. holeScore = i

    scoreList[0].holeScores.append(item)
}

答案 1 :(得分:1)

刚刚解决了我将我的类转换为struct的问题。我只是不知道如何在嵌套的子数组中处理这些引用类型。所以我使用了struct

   struct ScoreModel {
        var playerId: Int?
        var holeScores: [HoleScore]?
    }

   struct HoleScore {
    var holeScore: Int?
   }

现在为特定内部索引设置值不会影响其他人

let scoreList = [ScoreModel]()
scoreList[0].holeScores![0].holeScore = 3