ios - 在从初始化器 swift 返回之前,在所有路径上调用 'Super.init isn' t 时出现问题。

标签 ios swift

我正在尝试在基本的 iOS 应用中实现 BPM 计数器。

我正在使用 this在 XCode 项目中实现,将 addTap 方法连接到屏幕按钮。

但是,我收到错误。

Super.init isn't called on all paths before returning from initializer swift.

接着this我通过在这里搜索找到的答案,我意识到我必须调用 UIViewController 类中定义的 super.init()

我已经做到了,如下所示 - 但现在我遇到了另一个编译器错误

Cannot convert value of type 'NSCoder.Type' to expected argument type 'NSCoder'

我现在的内容贴在下面,TIA

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var display: UILabel!

private let timeOutInterval: TimeInterval
private let minTaps: Int
private var taps: [Date] = []

init(timeOut: TimeInterval, minimumTaps: Int) {
    timeOutInterval = timeOut
    minTaps = minimumTaps
    super.init(coder:NSCoder)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}



func addTap() -> Double? {
    let thisTap = NSDate()

    if let lastTap = taps.last {
        if thisTap.timeIntervalSince(lastTap) > timeOutInterval {
            taps.removeAll()
        }
    }

    taps.append(thisTap as Date)
    guard taps.count >= minTaps else { return nil }
    guard let firstTap = taps.first else { return nil }

    let avgIntervals = thisTap.timeIntervalSince(firstTap) / Double(taps.count - 1)
    return 60.0 / avgIntervals
}


@IBAction func button(_ sender: Any) {
self.display.text = String(addTap())
}

最佳答案

您的问题在于线路:

super.init(coder:NSCoder)

参数需要是 NSCoder 的实例,而不是类本身。但您甚至不应该调用该初始化程序。

将该行更改为:

super.init(nibName: nil, bundle: nil)

关于ios - 在从初始化器 swift 返回之前,在所有路径上调用 'Super.init isn' t 时出现问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48977063/

相关文章:

swift - '(字符串,AnyObject )' is not convertible to ' [字符串 : AnyObject]'

ios - 将仅 JS 的 React-Native 库升级到 RN 0.60

ios - Twilio 聊天 : Can I get a channel's message history without joining the channel?

ios - popToViewController 不工作,但 popViewController 工作

ios - 自定义 UINavigationBar

ios - 自定义 UITableview 单元格偶尔会在其他单元格之上重叠/复制

ios - 如何在后台模式下运行 NStimer?

ios - NSLayout 约束隐藏 UIView

ios - 推送 View Controller ,但返回另一个

ios - iOS 8 上未返回正确的自动布局宽度