我有一个视图,它将在用户位置更改后更新:

...
    .task(id: locationManager.currentLocation){
    
    ...
    
    }

我已经添加了一个需要视图更新的设置,即使它们的位置没有更新.我应该如何处理这两个设置,以便在位置更改or设置(Bool)更改时视图更新?我是否可以在.task()修改器中使用两个值:

.task(id: locationManager.currentLocation, someBoolForSetting)

推荐答案

它可以是像String这样简单的东西,结合了2

.task(id: "\(locationManager.currentLocation) \(someBoolForSetting)") 

或者如果你想做一些更华丽的事情,简单的struct美元

struct TaskId: Equatable{
    var location: CLLocation
    var bool: Bool
}

 }.task(id: TaskId(location: locationManager.currentLocation, bool: someBoolForSetting)) {

您可以使用第二个选项自定义Equatable一致性,如仅在坐标更改而不是speed更改时触发更改

Swift相关问答推荐

AirPods手势不发送AVAudioApp静音状态通知

如何避免使用DispatchSemaphores时线程爆炸?

@ MainActor + Combine不一致的编译器错误

日期格式yyyyyy—MM—dd hh:mm:ss +0000到dd MMM,以swift格式表示""""

仅使用@MainActor注释类的部分时的并发问题

使用 @resultBuilder 的通用 buildList 函数

循环字典中的数组

如何制作一个在 SceneKit 中投射阴影的透明物体?

如何删除 macOS 中的所有命令?

RxSwift 中 Single.just(...) 和 Observable.just(...) 之间有区别吗?

RxSwift 提高性能

用户输入以更改通过点击生成的形状大小

SwiftUI View Builder 参数无法更改状态

RealityKit – 无法加载 ARView(发现为零)

将项目引用添加到 Swift iOS XCode 项目并调试

Xcode 6 中的嵌入式内容包含 Swift 代码构建设置有什么作用?

Swift 中 NSFetchRequest 的多个 NSPredicates?

如何更改弹出框的大小

如何判断 firebase 数据库值是否存在?

在情节提要中设置的 UITableViewCell 的恢复 ID 和标识符有什么区别