注釈を設定するときにnilを取得します。mapitemsの値、mapkit swift 4

タイラーワンタ

Xcode9とmapkitを使用してSwift4でアプリを作成しています。今のところ、ユーザーが特定のボタンをクリックすると、クリックされたボタンに対応する注釈がマップにポップアップ表示されます。例:[レストラン]ボタンをクリックすると、特定のエリアのすべてのレストランに注釈がポップアップ表示されます。

マップビューに注釈を追加すると、問題が発生します。致命的なエラーが発生します。アンラップ中にnilが見つかりました。コードは次のとおりです。

enum annotations : String {
case restaurants = "Restaurants"
case movieTheater = "Movie Theater"
case shopping = "Shopping"
case bowling = "Bowling"
case park = "Park"
}

//In viewcontroller.swift
var annotationPoints : [MKMapItem] = []

@IBAction func annotationClicked(_ sender: UIButton) {
    guard let title = sender.currentTitle, let annotation =       annotations(rawValue: title) else {
        return
    }
    //only added two cases to test
    switch annotation {
    case .restaurants:
        getAnnotations(query: annotation.rawValue)
    default:
        getAnnotations(query: annotation.rawValue)
    }
}

func getAnnotations(query : String) {
    print("creating request")

    let request  = MKLocalSearchRequest()
    print("setting request")
    request.naturalLanguageQuery = query

    let span = MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5)
    let region = MKCoordinateRegion(center: (mapView.userLocation.location?.coordinate)!, span: span)
    print("setting region")
    request.region = region
    print("creating search")
    let search = MKLocalSearch(request: request)
    print("starting search")
    search.start { (response, error) in
        guard let response = response else {
            return
        }
        self.annotationPoints = response.mapItems
        var annotation : GetAnnotationPins?

        print(self.annotationPoints)
        for points in self.annotationPoints {
            print("the points name is \(String(describing: points.name))")
            print("the points number  is \(String(describing: points.phoneNumber))")
            print("the points coordinates are \(points.placemark.coordinate)")

            annotation?.title = points.name
            print("the title is \(String(describing: annotation?.title))")

            annotation?.subtitle = points.phoneNumber
            print("the subtitle is \(String(describing: annotation?.subtitle))")

            annotation?.coordinate = points.placemark.coordinate
            print("the coordinates are \(String(describing: annotation?.coordinate))")

            print("the annotaiton is \(String(describing: annotation))")


            self.mapView.addAnnotation(annotation!)

        }



//separate class for pin annotation 

class GetAnnotationPins : NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var subtitle: String?
var title: String?

init(coordinate : CLLocationCoordinate2D, subtitle : String, title : String) {
    self.coordinate = coordinate
    self.subtitle = subtitle
    self.title = title
}

}

//console print out
the points name is Optional("Lin\'s Garden") // restaurant near my location 
the points number  is Optional("‭+1 (715) 693-8899‬")
the points coordinates are CLLocationCoordinate2D(latitude:        44.791603000000002, longitude: -89.700630000000004)
the title is nil
the subtitle is nil
the coordinates are nil
the annotaiton is nil
Kosuke Ogawa

GetAnnotationPinsクラスを初期化する必要があります次のコードを試してください。

for points in self.annotationPoints {
    var annotation = GetAnnotationPins(coordinate: points.placemark.coordinate,
        subtitle: points.phoneNumber,
        title: points.name)
    ....
}

そして交換してください

 self.mapView.addAnnotation(annotation!)

 self.mapView.addAnnotation(annotation)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してくださいdebugcn@gmail.com

編集
0

コメントを追加

0

関連記事

分類Dev

Swift 4の注釈追加エラーが、アンラップ中に予期せずnilを検出しました

分類Dev

場所を検索しているときに、Google Map Swift4の一部の住所にnil応答を取得する

分類Dev

Swift構造体で値を設定した後にnilを取得する

分類Dev

Swift4でtextView.typingAttributesの前景色を設定する

分類Dev

swift4のnumberOflines値に合うようにプログラムでfontsizeを設定する方法

分類Dev

Swift4のstatusBarStyle

分類Dev

Swift-配列から注釈ピンに異なる画像を設定する

分類Dev

swift4ユーザーが地図上をドラッグするまでjsonからの注釈は表示されません

分類Dev

Mapkitで特定の注釈をプログラムで選択する方法-Swift

分類Dev

CodableFirebaseとカスタムクラスを使用してFirestoreからnil値を処理するSwift4

分類Dev

Swift 4でデバイスのフラッシュモードをどのように設定しますか?

分類Dev

iOS Swift MapKitは、ユーザーが注釈をドラッグ可能にしますか?

分類Dev

Swift4とFirebase子の値をカウントする方法

分類Dev

Swift4で辞書を配列としての値とマージする

分類Dev

tableViewの値をラベルSwift4に追加する

分類Dev

iOS9以降のSwift4でCoreDataを使用するようにBundle.main.urlを定義します

分類Dev

Swift 4:Plistに辞書を追加する

分類Dev

Swift4はモデルプロパティ名の値を静的に取得します

分類Dev

Swift 4で3つの可能な値をセグエしようとすると、.tagが機能しません

分類Dev

すべての注釈を表示する方法はSwiftを呼び出します

分類Dev

Swift4-プライバシー設定を更新した後にビューを更新するCLLocationManager

分類Dev

Swift 4:TimeIntervalは毎回乱数に設定されます

分類Dev

キーと値のペアを設定した後、Swift辞書はnilを返します

分類Dev

Swift 4didFinishPickingMediaWithInfo画像を保存

分類Dev

Swift:UITextFieldオブジェクトのデリゲートを設定するときに、オプションの値をアンラップしているときに予期せずnilが見つかりました

分類Dev

Swift4でFetchedResultsControllerを使用してDateSectionTitlesを取得する方法

分類Dev

Swift4-現在のViewControllerから新しいルートViewControllerを設定して表示する方法

分類Dev

FirebaseFirestoreから現在のユーザーの価値を取得する-Swift4

分類Dev

MapKit(Swift 4)Xcode9.2- 'コーナー4から法的帰属を挿入できませんでした'

Related 関連記事

  1. 1

    Swift 4の注釈追加エラーが、アンラップ中に予期せずnilを検出しました

  2. 2

    場所を検索しているときに、Google Map Swift4の一部の住所にnil応答を取得する

  3. 3

    Swift構造体で値を設定した後にnilを取得する

  4. 4

    Swift4でtextView.typingAttributesの前景色を設定する

  5. 5

    swift4のnumberOflines値に合うようにプログラムでfontsizeを設定する方法

  6. 6

    Swift4のstatusBarStyle

  7. 7

    Swift-配列から注釈ピンに異なる画像を設定する

  8. 8

    swift4ユーザーが地図上をドラッグするまでjsonからの注釈は表示されません

  9. 9

    Mapkitで特定の注釈をプログラムで選択する方法-Swift

  10. 10

    CodableFirebaseとカスタムクラスを使用してFirestoreからnil値を処理するSwift4

  11. 11

    Swift 4でデバイスのフラッシュモードをどのように設定しますか?

  12. 12

    iOS Swift MapKitは、ユーザーが注釈をドラッグ可能にしますか?

  13. 13

    Swift4とFirebase子の値をカウントする方法

  14. 14

    Swift4で辞書を配列としての値とマージする

  15. 15

    tableViewの値をラベルSwift4に追加する

  16. 16

    iOS9以降のSwift4でCoreDataを使用するようにBundle.main.urlを定義します

  17. 17

    Swift 4:Plistに辞書を追加する

  18. 18

    Swift4はモデルプロパティ名の値を静的に取得します

  19. 19

    Swift 4で3つの可能な値をセグエしようとすると、.tagが機能しません

  20. 20

    すべての注釈を表示する方法はSwiftを呼び出します

  21. 21

    Swift4-プライバシー設定を更新した後にビューを更新するCLLocationManager

  22. 22

    Swift 4:TimeIntervalは毎回乱数に設定されます

  23. 23

    キーと値のペアを設定した後、Swift辞書はnilを返します

  24. 24

    Swift 4didFinishPickingMediaWithInfo画像を保存

  25. 25

    Swift:UITextFieldオブジェクトのデリゲートを設定するときに、オプションの値をアンラップしているときに予期せずnilが見つかりました

  26. 26

    Swift4でFetchedResultsControllerを使用してDateSectionTitlesを取得する方法

  27. 27

    Swift4-現在のViewControllerから新しいルートViewControllerを設定して表示する方法

  28. 28

    FirebaseFirestoreから現在のユーザーの価値を取得する-Swift4

  29. 29

    MapKit(Swift 4)Xcode9.2- 'コーナー4から法的帰属を挿入できませんでした'

ホットタグ

アーカイブ