【发布时间】:2021-11-29 21:38:11
【问题描述】:
我按照this 和this 教程编写了一个演示程序,用于在 SwiftUI 中的地图上显示大头针,它没有问题。然后,当我将相同的技术应用到我的应用程序时,我收到一个类型不能符合“MapAnnotationProtocol”的错误。
这是我的代码:
import SwiftUI
import MapKit
struct MapLocationView: View {
@ObservedObject var manager = LocationManager()
@FetchRequest(sortDescriptors: [])
private var meals: FetchedResults<Meal>
var body: some View {
Map(coordinateRegion: $manager.region, annotationItems: meals) { meal in // error is on Map
if (meal.latitude != 0 && meal.longitude != 0) {
let coordinate = CLLocationCoordinate2D(latitude: meal.latitude, longitude: meal.longitude)
MapPin(coordinate: coordinate)
}
}
}
}
LocationManager 代码与教程和我编写的演示中的相同,未更改的代码。我不明白为什么它在演示中有效并且在我的应用中无效。
我尝试将代码包装在 Group {} 中,但这并没有解决问题。我读过其他包含类似错误消息的文章,但这些解决方案似乎都不适用于这种情况。
我对 Swift 和 SwiftUI 还很陌生,所以它应该在演示中工作而不是在我的应用程序中工作对我来说毫无意义。我希望我已经提供了足够的信息来解决这个问题。
【问题讨论】:
-
欢迎来到 Stack Overflow!请拨打tour 并查看:How do I ask a good question? 和How to create a Minimal, Reproducible Example。错误到底在哪里,确切的措辞是什么?
-
Map的尾随闭包内没有返回任何内容