将 CLLocationManager 与 SwiftUI 结合使用(XCode 14.3.1、iOS 16.6)

问题描述 投票:0回答:1

我正在构建一个iPhone应用程序来显示当前的太阳时——一天中的时间基于您实际位置天空中太阳的位置,而不是您所在的时区。为此,我需要知道经度。

我显然需要创建并使用 CLLocationManager 实例。我在网上找到的所有示例都假设使用 UIKit,并在作为 CLLocationManagerDelegate 的视图控制器中包含一些初始化和事件处理代码。这明显取决于 UIViewController。

也许可以混合 UIKit 和 SwiftUI,如果是这样,那可能会解决我的问题。但我不知道,我的Google fu也没有找到相关的例子。

有谁知道如何在 SwiftUI 中创建一个使用 CLLocationManager 实例和适当委托的新类?最棒的是:有没有使用 SwiftUI 的玩具“我在哪里”应用程序的示例代码,我可以滑动?

我尝试在我的应用程序中设置一个类来管理位置信息:

class SMCLocation {
    var longitude: Double
    var latitude: Double
    var valid: Bool = false
    
    private var lm = CLLocationManager()

    init() {
        lm.delegate = self
    }
    
    private func start() -> Void {
        
    }
}

Swift 编译器不喜欢这一点,并在 init 函数中的

lm.delegate = self
语句中抱怨,

Cannot assign value of type 'SMCLocation' to type '(any CLLocationManagerDelegate)?'
Add missing conformance to 'CLLocationManagerDelegate' to class 'SMCLocation'

我不知道这样的一致性是什么,或者如何将其添加到我的类中。

swift swiftui core-location
1个回答
0
投票

您缺少像错误所示的一致性

class SMCLocation: NSObject, CLLocationManagerDelegate {
© www.soinside.com 2019 - 2024. All rights reserved.