gpt4 book ai didi

ios - 在 Swift 3 中使用公共(public)枚举来控制时区

转载 作者:行者123 更新时间:2023-11-28 16:10:51 24 4
gpt4 key购买 nike

我一直在将一些代码更新到 Swift 3.0。我正在使用 Melvin Rivera 的精彩 date extension for Swift 3.0 .现在 Melvin 将 TimeZone 声明为公共(public)枚举,如下所示:

public enum TimeZone {
case local, utc
}

现在我的 Swift 3.0 之前的代码遇到了问题,因为它使用了一些常见的 TimeZone 代码。例如:

let df = DateFormatter()
df.dateFormat = "MMM d, yyyy, hh:mm a"
df.timeZone = TimeZone(abbreviation: usersTimeZone)

每当我使用这样的代码时,我都会收到一个编译器错误,指出“'TimeZone' 无法构造,因为它没有可访问的初始化程序”。如果 TimeZone 已构建为公共(public)枚举,则使用各种 TimeZone 函数的正确方法是什么?

最佳答案

错误消息说 TimeZone 没有任何可访问的初始值设定项,这是因为它没有。 TimeZone 是一个枚举,您可以键入 TimeZone.localTimeZone.utc,因为它今天有效。

对于初始化程序部分,您可以阅读有关 init 的更多信息 here在 Apple 文档站点。

您可以在 Apples documentation site 上阅读有关枚举的更多信息.

编辑:
将您的代码更新为以下内容:

let df = DateFormatter()
df.dateFormat = "MMM d, yyyy, hh:mm a"
df.timeZone = TimeZone(abbreviation: String(describing: Zone.local))

public enum Zone: String {
case local
case utc
}
  1. 我将 TimeZone 枚举重命名为 Zone 因为 TimeZone 是一个为 DateFormatter 保留工作
  2. 您需要为 TimeZone 传递一个字符串值,这就是
  3. 我已将代码更新为 Swift 3.0 语法

.

关于ios - 在 Swift 3 中使用公共(public)枚举来控制时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39578835/

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