想要根据刷卡ID在主屏幕上显示完成的总百分比

时间:2019-10-08 07:11:47

标签: ios swift swipe

在我的应用程序中,我向左或向右滑动卡片,当所有卡片都完成滑动后,我进入分数屏幕,其中显示了总回答百分比,即30%或40%等。我想显示该分数根据各自刷卡的ID转到主屏幕。我的分数屏幕如下:

score screen

我想在主屏幕中显示如下图所示: home screen

问题是,当我滑动其他卡类别的卡,然后在主屏幕中显示百分比分数时,先前添加到先前类别的分数就消失了。我想显示各个卡片的分数,即我先刷一下食品类别卡片,显示分数,然后再刷蔬菜卡片,然后显示分数。我希望显示两个类别的卡分数,依此类推。我认为每次我刷卡时都会尝试在主屏幕上显示分数,然后将其替换为当前分数。我需要显示我刷过的任何卡,它应该显示每张卡的相应分数

分数屏幕的源代码,其中我已将分数存储在userdefaults中,并且卡号也存储在userdefaults中

self.progressScoreView.value = CGFloat(self.tempProgress)
            UserDefaults.standard.set(self.progressScoreView.value, forKey: "percent_completed")
            UserDefaults.standard.set(self.cardId, forKey: "card_ID")
            UserDefaults.standard.synchronize()

我的主屏幕代码,其中显示以cellforrow方法编写的分数,并且我正在检查保存的卡ID和来自api端的卡的ID:

if let status = dict.cardStatus, let cardID = dict.cardId, status.count != 0
        {
            let card_completed_percent = UserDefaults.standard.double(forKey: "percent_completed")
            let tmpID = UserDefaults.standard.integer(forKey: "card_ID")
            print(tmpID)

            if status == "Unlock"
            {
                if card_completed_percent > 0 && (cardID == tmpID)
                {
                    let tmpCompleted = forTrailingZero(temp: card_completed_percent)
                    cell.percentCompleted.text = "\(tmpCompleted)%"
                    print(cell.percentCompleted.text!)
                    cell.deckLock.isHidden = true
                }
                else
                {
                    cell.percentCompleted.text = ""
                    print(cell.percentCompleted.text!)
                    cell.deckLock.isHidden = true
                }
            }
            else
            {
                cell.percentCompleted.text = ""
                cell.deckLock.isHidden = false
            }
        }

请帮助我解决这个问题

2 个答案:

答案 0 :(得分:0)

我认为您的问题在这里

let card_completed_percent = UserDefaults.standard.double(forKey: "percent_completed")
let tmpID = UserDefaults.standard.integer(forKey: "card_ID")

这样一来,您只节省了百分之一的价值。 尝试这个: UserDefaults.standard.double(forKey:“ percent_completed_food”)和 UserDefaults.standard.double(forKey:“ percent_completed_other_category”) 这样您就可以为每个类别保存一个值。

答案 1 :(得分:0)

尝试像这样保存您的百分比和卡ID

UserDefaults.standard.set(self.progressScoreView.value, forKey: "percent_completed_for_\(category.id)")
UserDefaults.standard.set(self.cardId, forKey: "card_ID\(card.id)")

并使用这些键从UserDefaults获取值。