在我的应用程序中,我向左或向右滑动卡片,当所有卡片都完成滑动后,我进入分数屏幕,其中显示了总回答百分比,即30%或40%等。我想显示该分数根据各自刷卡的ID转到主屏幕。我的分数屏幕如下:
我想在主屏幕中显示如下图所示: 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
}
}
请帮助我解决这个问题
答案 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获取值。