【问题标题】:NSTimeZone initialisation results in "unable to read data"NSTimeZone 初始化导致“无法读取数据”
【发布时间】:2016-01-11 02:48:38
【问题描述】:

我正在尝试像这样初始化一个 NSTimeZone 对象:

var timezone = NSTimeZone.init(name: "Europe/Moscow")

而不是 nil 或合法的语言环境值 - 我在 xCode 的调试工具中得到“无法读取数据”

我通过NSTimeZone.knownTimeZoneNames()获得了时区字符串(“Europe/Moscow”)

我正在使用 xCode 7

我做错了什么?

【问题讨论】:

  • 而不是 var 使用 let。它对我来说工作正常。 let _timeZone = NSTimeZone(name: "Europe/Moscow") print(_timeZone)
  • 嗯。是的,打印语句给了我: Optional(Europe/Moscow (GMT+3) offset 10800) - 调试器仍然显示“无法读取数据”
  • 调试器变量视图有时只是错误。如果 print() 给出正确的输出,那么一切正常。
  • @MartinR 如果您将其放入答案中,我会接受它

标签: ios swift foundation nstimezone


【解决方案1】:

正如 cmets 中所指出的 - 变量视图只是错误 - print() 导致了正确的输出。

运行 iPhone 6 模拟器而不是 iPhone 5 模拟器会产生预期的结果。

【讨论】:

    【解决方案2】:

    它对我来说工作正常,使用 let 而不是 var.Check 下面

    供参考 Swift NSDate UTC time and local time

    【讨论】:

    • 嗯 - 你可以尝试用 iPhone 5 模拟器运行它吗?在运行 iPhone 6 模拟器时,我也得到了正确的结果(无论使用 let 还是 var)
    【解决方案3】:

    以前没用过那个类,但我猜应该是let timezone = NSTimeZone(name : "")?从未见过以这种方式初始化的类。

    【讨论】:

    • 是的,这可能更干净 (y) - 但它会产生相同的结果
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2017-04-21
    • 1970-01-01
    • 2021-10-08
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多