【问题标题】:UserDefault is not working with M1 Chip MacBook Air and Xcode Simulator in Swift 5UserDefault 不适用于 Swift 5 中的 M1 芯片 MacBook Air 和 Xcode 模拟器
【发布时间】:2021-11-08 14:23:02
【问题描述】:

我有 M1 芯片 MacBook Air 笔记本电脑。我从 UserDefaults 设置、删除和获取值。

下面的代码我设置了值

UserDefaults.standard.setValue("my string", forKey: "UserEmail")

使用 valueforkey 获取值

UserDefaults.standard.value(forKey: "UserEmail")

使用 removeObject 从用户默认值中删除键

UserDefaults.standard.removeObject(forKey: "UserEmail")

即使我通过 "UserEmail" 设置值,我也无法获取该值。如果我运行四到五次就会发生奇怪的事情,然后有时我得到了价值,有时却不在模拟器中!我在谷歌上搜索过,堆栈溢出并且已经在这个问题上花费了很多时间,但没有找到任何解决方案。

仅当我在实际设备和其他没有 M1 芯片的笔记本电脑上运行它时才有效。

谁能帮帮我我该怎么做才能在模拟器和我的 M1 芯片笔记本电脑上正常工作。

【问题讨论】:

  • 应该不是 M1 的问题。确保您不会在每次启动时意外重置 UserDefaults
  • 不,我没有重新启动用户默认值。
  • 对我来说,它无法在游乐场或模拟器中重现。您在读取值时没有使用UserDefaults.standard.string 的任何原因?
  • 不,没有理由。我也尝试这种方式,但不适合我!
  • 嗯,最重要的是,您没有提供足够的信息来使这个可重现,所以除非有人经历过(并解决了)完全相同的问题,否则我认为无法回答这个问题。跨度>

标签: swift ios-simulator swift5 apple-m1 userdefaults


【解决方案1】:

尝试UserDefaults.standard.synchronize(),尽管它是一个已弃用的 API。附带说明一下,如果它与此调用一起使用,则说明 Apple 和 ARM 芯片方面存在错误。

【讨论】:

    【解决方案2】:

    检查您是否在模拟器上使用发布方案:编辑方案 -> 运行 -> 构建配置该值应位于“调试”而不是“发布”中。 还要检查调试可执行选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2021-02-23
      • 2022-08-04
      相关资源
      最近更新 更多