如何在不重复的情况下随机化模型数组中的卡片数据

How to randomize cards data from model array without repetition

我正在显示我的模型数组中的卡片数据,我如何在每次启动应用程序时随机化卡片数据并且不应该重复。我正在使用 ZLSwipeable 视图库来创建刷卡功能的卡片。这是我编写所有刷卡代码的函数,代码中的 wordsdata 是我声明的模型数组,就像这个 var wordsdata = ModelRsult。 CardView 是我将卡片显示到

中的视图

screenshot of my card display screen

在图像中它显示香蕉作为第一个数据,现在当我再次 运行 应用程序时它应该首先显示另一个数据等等

我的源代码:

func nextCardView() -> UIView?
    {
        let arrayData = wordsData
        if (self.colorIndex >= arrayData.count)
        {
            return nil
        }

        let cardView = CardView(frame: swipeableView.bounds)

        if loadCardsFromXib
        {
            let contentView = Bundle.main.loadNibNamed("CardContentView", owner: self, options: nil)?.first! as! CardView
            contentView.superVC = self
            contentView.translatesAutoresizingMaskIntoConstraints = false
            contentView.backgroundColor = cardView.backgroundColor

            cardView.addSubview(contentView)

            let data = arrayData[(self.colorIndex)] as ModelResult
            contentView.wordModel = data

            let savedValue = UserDefaults.standard.bool(forKey: "isLangChanged")

            tempLangChanged = savedValue

            if tempLangChanged == false
            {
                if let spanishName = data.cardWordEnglish, spanishName.count != 0
                {
                    contentView.wordSpanish.text = spanishName
                    print(spanishName)
                }
            }
            else
            {
                if let dict = data.cardWordImage, dict.count != 0
                {
                    let url = WS_wordIconUrl + dict
                    contentView.wordImage.kf.indicatorType = .activity
                    contentView.wordImage.kf.setImage(with: URL(string: url))
                }

                if let spanishName = data.cardWordSpanish, spanishName.count != 0
                {
                    contentView.wordSpanish.text = spanishName
                    print(spanishName)
                }
            }



            contentView.soundBtn.addTarget(self, action:#selector(self.soundBtn(sender:)), for: .touchUpInside)
            contentView.hideCard.addTarget(self, action:#selector(self.hideCard(sender:)), for: .touchUpInside)

            contentView.soundBtn.tag = self.colorIndex
            contentView.hideCard.tag = self.colorIndex

            cardView.tag = self.colorIndex
            constrain(contentView, cardView) { view1, view2 in
                view1.left == view2.left
                view1.top == view2.top
                view1.width == cardView.bounds.width
                view1.height == cardView.bounds.height
            }
        }
        colorIndex += 1
        return cardView

    }

解决这个问题的最好方法是洗牌数组,然后使用它。在你的情况下,我会在应用启动时随机播放它。

array.shuffle()