@Bindingで得た配列(MapItem型)をListで表示したいです。
List()ですが下記のように値を入れた場合だと他のviewでインスタンスを生成すると
問題なく表示されます。
import SwiftUI struct ListView: View { let arrays = ["tanaka","sato","kato"] var body: some View { List(arrays,id:.self) { array in Text(array) } } }
しかし、このように記述するとエラーがでます。
エラー:Value of type 'NSObject' has no member 'name'
そんなの無いと。。。
どのようにMap上で検索して得たMapViewItem型のデーターをListで表示できますでしょうか・
struct ListView: View { @Binding var matchingItems:[MKMapItem] var body: some View { List(matchingItems,id:.self) { matchingItem in Text(matchingItem.name) } } }
別のview
import MapKit struct HogeView: View { @State var matchingItems:[MKMapItem] = [MKMapItem]() var body: some View { ListView(matchingItems: self.$matchingItems) } func getMapItem(){ let search = MKLocalSearch(request: request) search.start { (response, error) in // 省略 for mapItem in response!.mapItems { self.matchingItems.append(mapItem as MKMapItem) } } }
matchingItemsをprint文でコンソール上に表示させると(matchingItems[0])
中身は下記のように取得できています。
<MKMapItem: 0x2827f6100> { isCurrentLocation = 0; name = "XXXXXXXXXXXXXXXXXXXX"; phoneNumber = "XXXXXXXXXXXXXXXXX"; placemark = "@ <+35.00000,+136.0000>"; url = "https://www.starbucks.co.jp/"; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/08 01:24
2020/02/08 11:05 編集
2020/02/08 11:54