首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何阻止数组生成过多的对象?

如何阻止数组生成过多的对象?
EN

Stack Overflow用户
提问于 2019-05-31 10:25:24
回答 1查看 48关注 0票数 1

我已经构建了一个数组来生成8次迭代的随机牌对,总共16张牌。然而,它却生产了17张牌。我不明白它为什么要生产这张额外的卡,也不知道如何阻止它。

我对Xcode和Swift显然是个新手,所以我的调试技能是零。我插入了print语句并使用了断点来尝试理解额外的卡片来自哪里。这似乎发生在CardModel类的一开始,可能是我在一开始编写该方法的方式。

代码语言:javascript
代码运行次数:0
运行
复制
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个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 10:27:31

这一行:

代码语言:javascript
代码运行次数:0
运行
复制
var generatedCardsArray = [Card()]

你用来初始化一个空数组实际上是创建一个只有一个条目的数组。试试这个:-

代码语言:javascript
代码运行次数:0
运行
复制
var generatedCardsArray : [Card] = []

然后你正确地生成了16张牌(8对),但你已经有了一张牌,那就是17张。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56387921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档