【发布时间】:2021-05-12 09:08:21
【问题描述】:
所以我昨晚和今天早上刚刚对 UserDefaults 进行了一些研究,我想知道如何以某种方式使用字典。我的问题是,当用户按下某个按钮并设置 UserDefaults 字典数据时,应用程序中的每条数据也会受到影响。我的目标是只影响那条数据,其余的保持与以前相同。
let eventDict = ["eventName": "\(selectedEventName!)", "purchased": true] as [String : Any]
这是我设置的字典,很简单。当按下按钮时,我运行这行代码。
self.defaults.set(eventDict, forKey: "eventDict")
这些工作完美,我检查了 .plist 文件,一切都正确,它显示事件名称和购买为 1(真)。
现在我尝试在我购买事件的页面的viewDidLoad() 中添加一些逻辑,它可以工作,但是当我检查所有其他事件时,页面具有相同的结果,这不是我想要的。
let checkEventStatus = defaults.dictionary(forKey: "eventDict")
if checkEventStatus?.isEmpty == false {
viewPurchaseButton.isHidden = false
cancelPurchaseButton.isHidden = false
purchaseTicketButton.isHidden = true
creditCard.isHidden = true
} else {
viewPurchaseButton.isHidden = true
cancelPurchaseButton.isHidden = true
}
我不知道如何从字典中的键中检索确切的值,所以我只使用了isEmpty(),我认为这是有道理的,因为如果没有购买该活动,它就没有一本字典,里面有它的名字。
这些是我想在按下购买按钮时显示的按钮。购买按钮现在是隐藏的,因为它已经被按下,所以设置了 UserDefault 数据,这会影响按钮的可见性。现在,当我检查所有其他事件时,屏幕是相同的。我只是希望每个屏幕都以某种方式出现,具体取决于是否购买了活动或不使用 UserDefaults。
【问题讨论】:
标签: ios swift dictionary nsuserdefaults userdefaults