1

我对 swift 很陌生,对于我的项目,我需要使用 swift3 和 xcode8.1 我尝试了不同的解决方案,但注意到有效。我认为这是因为 swift3 从 swift2 转换,正如我在不同主题上看到的那样。尽管如此,这对我没有多大帮助。

这是我的功能:

func startHeartRateUpdates() {
    output("Starting Heart Rate updates...")
    if let client = self.client {
        do {
            try client.sensorManager.startHeartRateUpdates(to: nil, withHandler: { (heartRateData: MSBSensorHeartRateData!, error: NSError!) in
                self.hrLabel.text = NSString(format: "Heart Rate: %3u %@",
                    heartRateData.heartRate,
                    heartRateData.quality == MSBSensorHeartRateQuality.acquiring ? "Acquiring" : "Locked") as String
            })
            self.perform(#selector(ViewController.stopHeartRateUpdates), with: nil, afterDelay: 60)
        } catch let error as NSError {
            output("startHeartRateUpdatesToQueue failed: \(error.description)")
        }
    } else {
        output("Client not connected, can not start heart rate updates")
    }
}

我遇到的唯一错误是这 2 行用红色下划线:

heartRateData.quality == MSBSensorHeartRateQuality.acquiring ? "Acquiring" : "Locked") as String

随着消息:

'Int1' 不能转换为 'Bool'

谢谢你的帮助。

4

1 回答 1

1

我认为该领域acquiring是一种int类型。如果你int在条件语句中使用 type 作为条件,你应该使用==.

例子:

heartRateData.quality = MSBSensorHeartRateQuality.acquiring == 1 ? "Acquiring" : "Locked") as String
于 2016-11-08T14:12:06.100 回答