ios - NSDate 代码未迁移到 Swift 3.0

标签 ios swift3

我正在尝试将我的代码转换为 Swift 3.0,并且在使用迁移工具后我很难转换某个代码块。

之前到 SWIFT 3.0 的迁移:

import Foundation

extension NSDate {
    convenience init(posixTime: Double) {
        self.init(timeIntervalSince1970: Double(posixTime) / 1000.0)
    }
}

迁移后工具:
extension Date {
    init(posixTime: Double) {
        //ERROR IN THE LINE BELOW: "'init' is a member of the type; use 'type(of: ...)' to initialize a new object of the same dynamic type"
        (self as NSDate).init(timeIntervalSince1970: Double(posixTime) / 1000.0)
    }
}

我按照 Xcodes 的建议将“init”替换为“type(of:init)”:
extension Date {
    init(posixTime: Double) {
        //ERROR IN THE LINE BELOW: "Expected expression in list of expressions"
        (self as NSDate).type(of: init)(timeIntervalSince1970: Double(posixTime) / 1000.0)
    }
}

然后 Xcode 要求我在“of:”前面添加一个逗号,这会导致更多错误(以及更多将逗号放在错误位置的建议)。在 Swift 3 中使用这段代码的正确方法是什么?

最佳答案

您可以轻松删除 convenience从初始化方法。

extension Date {
    init(posixTime: Double) {
        self.init(timeIntervalSince1970: Double(posixTime) / 1000.0)
    }
}

似乎迁移工具错误地转换了 self实例到您之前的代码中的 NSDate。

关于ios - NSDate 代码未迁移到 Swift 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39863373/

相关文章:

swift - CGPathAddArc 在创建路径时遇到一些问题

ios - 如何在动画开启时更改 CABasicAnimation 的 toValue/fromValue

ios - 如何在应用程序委托(delegate)中将选项卡 Controller 设置为根 Controller 而不实例化(重新加载)它?

iphone - 在 Objective-C 中,我们如何称呼 "[ob method]"语法?

ios - 一个 AVPlayerItem 不能与 iOS 8.4 中的多个 AVPlayer 实例相关联

iphone - 使用 AVAudioRecorder 录制 WAV 格式文件?

json - 在 Swift 3.0 中如何从返回的 json 中获取特定值?

ios - 在 xcode 中实现登录屏幕后滑出菜单栏

ios - Swift - 生成不在检索列表中的随机数

swift - 升级到 Swift 3.0 后,从左到右的动画不起作用