gpt4 book ai didi

ios - 在 Swift 中从 `UserDefaults` 更新值时出现问题

转载 作者:行者123 更新时间:2023-11-28 14:44:25 25 4
gpt4 key购买 nike

我正在通过 UserDefaults 从我的 vc2 向 vc1 发送一个字符串值。但是当我通过后退按钮从 vc2 返回到 vc1 时,该值不会更新。我在 viewWillAppear 方法中获取 vc1 中的值。但我的值(value)没有更新。我通过 push 方法从 vc1 导航到 vc2。

这就是我在 vc2 中存储用户默认值的方式,

  cartItems = cartItems + 1
print(cartItems)
let badgeCount = String(cartItems)
print(badgeCount)
let rightBarButton = self.navigationItem.rightBarButtonItem
let badge = String(badgeCount)
rightBarButton?.addBadge(text: badge)
UserDefaults.standard.set(badgeCount, forKey: "cartsItems")
UserDefaults.standard.synchronize()

在 vc1 中,我在 viewWillAppear 委托(delegate)中得到这样的结果,

 let count =  UserDefaults.standard.string(forKey: "cartsItems")
print(count)

当我通过后退按钮值从 vc2 返回到 vc1 时永远不会更新,当我调用其他 vc 而不是再次调用 vc1 时它会更新。那时我该如何更新值(value)?

最佳答案

好吧,正确的方法是使用简单的委托(delegate)协议(protocol)将数据从一个VC2 传输到另一个VC1

以下是如何使用协议(protocol)的步骤。

VC2 ` 中执行以下步骤。

就在您的类声明上方声明您的委托(delegate)。

protocol MyDelegate:class {
func sendDataBack(value: Int)
}

class 中声明 delegateweak variable

weak var myDelegateObj: MyDelegate?

当您关闭 VC 时,只需用 line 调用委托(delegate)

myDelegateObj?.sendDataBack(value: yourIntegrerValue)

现在转到您的 VC1 并转到您将 VC1 推送到 VC2 的行 并执行以下操作。

vc2.myDelegateObj = self // vc2 is VC2 objcet

并在 VC1

中实现您的委托(delegate)方法
func sendDataBack(value: Int) {
print(value)
}

希望这对您有所帮助。

关于ios - 在 Swift 中从 `UserDefaults` 更新值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50370853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com