【问题标题】:How to stop an array from generating too many objects?如何阻止数组生成太多对象?
【发布时间】:2019-05-31 02:25:24
【问题描述】:

我构建了一个数组来生成 8 次随机卡片对迭代,总共 16 张卡片。然而,它却生产了 17 张卡片。我看不出它为什么要生产这张额外的卡片或如何阻止它。

我显然是 Xcode 和 Swift 的新手,所以我的调试技能为零。我插入了打印语句并使用断点来尝试了解额外卡的来源。它似乎发生在 CardModel 类的最开始,可能是我在开始时编写方法的方式。

class CardModel {

    func getCards() -> [Card] {
        //print("2nd Check")
        // Declare an array to store the generated cards
        var generatedCardsArray = [Card()]

        print("number of random pairs \(generatedCardsArray.count)")

        // Randomly generate pairs of cards
        for _ in 1...8 {

            print("number of random pairs \(generatedCardsArray.count)")

            // Get a random number
            let randomNumber = arc4random_uniform(13) + 1

            // Log the number
            print("Random # \(randomNumber)")

            // Create the first card object
            let cardOne = Card()
            cardOne.imageName = "card\(randomNumber)"

            generatedCardsArray.append(cardOne)

            // Create the second card object
            let cardTwo = Card()
            cardTwo.imageName = "card\(randomNumber)"

            generatedCardsArray.append(cardTwo)

我希望这会输出 16 个随机对,但它输出的是 17 个

【问题讨论】:

标签: arrays swift


【解决方案1】:

这一行:

var generatedCardsArray = [Card()]

您用来初始化一个空数组实际上是在创建一个包含一个条目的数组。试试这个:-

var generatedCardsArray : [Card] = []

然后您正确地生成了 16 张牌(8 对),但您已经有一张开始,即 17。

【讨论】:

  • var generatedCardsArray = [Card]()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2016-08-14
  • 2012-03-12
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多