gpt4 book ai didi

Swift 覆盖默认初始化无子类

转载 作者:行者123 更新时间:2023-12-03 08:49:38 27 4
gpt4 key购买 nike

是否可以在不创建子类的情况下覆盖默认 init?

我希望在我的应用中创建的每个 DateFormatter 实例都附加相同的locale。现在,在创建每个实例时,我必须:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX"

是否有可能在不需要每次都写出语言环境的情况下发生这种情况?我宁愿创建一个 DateFormatter 子类,因为我觉得这有点过分了

谢谢!

最佳答案

如果不子类化或修改源代码,就无法覆盖类的现有方法(对于内置类型,显然不能这样做)。

但是,对于您的具体情况,您可以简单地添加一个方法/静态变量,该变量返回特定于您的需求的 DateFormatter

extension DateFormatter {
static func usPosix() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
return dateFormatter
}
}

然后,您不必调用 let dateFormatter = DateFormatter(),而是 let dateFormatter = DateFormatter.usPosix()

关于Swift 覆盖默认初始化无子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756276/

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