使用SwiftUi为Apple Watch构建基本的高度表

问题描述

我正在尝试使用SwiftUI构建MVP,该MVP只是向我显示Apple Watch上的海拔变化。从那里,我将找出下一步的工作(我想将其用于滑翔伞和其他航空用品)。

我以前在python中有经验,但是在Swift中却没有,所以即使经过大量教程,我也不确定如何以及在哪里声明然后使用功能。

到目前为止,这是我的代码:

//
//  ContentView.swift
//  Altimeter WatchKit Extension
//
//  Created by Luke Crouch on 29.09.20.
//

import SwiftUI
import CoreMotion


//class func isRelativeAltitudeAvailable() -> Bool


struct ContentView: View {
    let motionManager = CMMotionManager()
    let queue = OperationQueue()
    let altimeter = CMAltimeter()
    let altitude = 0
    var relativeAltitude: NSNumber = 0
    
    var body: some View {
        
        if motionManager.isRelativeAltitudeAvailable() {
         switch CMAltimeter.authorizationStatus() {
         case .notDetermined: // Handle state before user prompt
             fatalError("Awaiting user prompt...")
         case .restricted: // Handle system-wide restriction
            fatalError("Authorization restricted!")
         case .denied: // Handle user denied state
            fatalError("Auhtorization denied!")
         case .authorized: // Ready to go!
             print("Authorized!")
         @unknown default:
            fatalError("Unknown Authorization Status")
         }
            altimeter.startRelativeAltitudeUpdates(to: queue,withHandler: CMAltitudeHandler)
        }

// something like relative Altitude = queue[..]
        
        Text("\(relativeAltitude)")
            .font(.largeTitle)
            .fontWeight(.bold)
            .foregroundColor(Color.green)
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我遇到了多个我不知道如何处理的错误:

  • 类型'Void'不能符合'View',只有struct / enum / class类型可以符合协议。
  • CMMotionManager类型的值没有成员'isRelativeAltitudeAvailable'
  • 类型'()'不符合View ...
  • 无法将类型'CMAltitudeHandler.Type'的值(aka'(((Optional,Optional)->())。Type')转换为预期的参数类型'CMAltitudeHandler'(aka'((Optional,Optional)->() ')

能给我一些提示吗?

非常感谢! 卢克

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)