對于視障人士的應用程式,我想在視圖中顯示 POI。我使用下面的代碼。盡管最低級別 ( requestNearbyLocations
) 將資訊列印到除錯螢屏,但我無法將此資料 ( locdata
) 回傳到呼叫方法,因此也無法回傳到視圖。
所用代碼的主要摘錄:
struct ContentView: View {
var Apple: AppleData = AppleData()
var body: some View {
Text(Apple.text)
.onAppear {
Apple.requestLoc()
}
}
}
和
class AppleData {
var text = ""
func requestLoc() -> Void {
Task {
async let mytext = requestNearbyLocations()
text = await mytext
}
}
func requestNearbyLocations() async -> String {
var region = MKCoordinateRegion()
region.center = CLLocationCoordinate2D(latitude: 52.060049, longitude: 4.542196)
var loctext = ""
let request = MKLocalPointsOfInterestRequest(center: region.center, radius: 100.0)
request.pointOfInterestFilter = MKPointOfInterestFilter(excluding: [.restaurant, .cafe])
let search = MKLocalSearch(request: request)
do {
let response = try await search.start()
print(response.mapItems)
for item in response.mapItems {
print( item.name! )
loctext = item.name!
}
}
catch {
print(error)
}
return loctext
}
}
我在這里錯過了什么?
uj5u.com熱心網友回復:
您想“觀察” text
.
因此,宣告AppleData
為 anObservableObject
和text
to be @Published
:
class AppleData: ObservableObject {
@Published var text = ""
...
}
并且ContentView
應該將該物件指定為@ObservedObject
:
struct ContentView: View {
@ObservedObject var apple = AppleData()
var body: some View {
Text(apple.text)
.onAppear {
apple.requestLoc()
}
}
}
請參閱在您的應用程式中管理模型資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486952.html