2017-09-16 17 views
0

私はマップビュー上のユーザの現在位置を表示しようとしているが、私はここの場所マネージャ機能「CLLocation」のダウンキャスト'CLLocation'はオプションをアンラップします。あなたは '!'を使うつもりでしたか?

の最初の行にエラーを取得していますが、私のコードは

ある
import UIKit 
import MapKit 

class FirstViewController: UIViewController, CLLocationManagerDelegate { 

@IBOutlet weak var mapkitView: MKMapView! 
var locationManager: CLLocationManager! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    if (CLLocationManager.locationServicesEnabled()) 
    { 
     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestAlwaysAuthorization() 
     locationManager.startUpdatingLocation() 
    } 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    let location = locations.last as! CLLocation 

    let center = CLLocationCoordinate2DMake(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) 

    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)) 

    self.mapkitView.setRegion(region, animated: true) 
} 
} 

エラーI 「CLLocation」のダウンキャストですか? 「CLLocation」にのみoptionalsをアンラップ;「!」?!あなたが使用することを意味した

をライン上の場所を聞かせて= CLLocation

としてlocations.last私は今日だけ迅速に開始そう私と一緒に 任意の助けをされて裸してくださいあなたが力鋳造CLLocationからOptionalCLLocationです

+0

あなたは 'として必要はありません!配列には 'CLLocation'が含まれているので、単に' locations.last! 'と言うことができますが、しないでください。条件付きアンラップ 'を使用する場合は、let location = locations.last {'。しかし、 'MKMapView'のドキュメントを読んでいると、ユーザ追跡モードを有効にすると、これをすべて行うことができます。 – Paulw11

+0

ありがとう私は今何かエラーが出ることはありませんが、それが実行されると、私の場所がない地図が表示されます。 – Will

+0

ロケーションへのアクセスを許可するよう求められましたか?あなたはシミュレータまたは実際のデバイスでテストしていますか?シミュレータの場合は、メニューから位置をシミュレートしましたか?実際のデバイスであれば、ロケーションフィックスがありますか? – Paulw11

答えて

0

を高く評価スウィフトは、単にそれをアンラップ強制的に提案する理由、それは次のとおりです。

let location = locations.last! 

このバージョン(とあなた)のwi locationsが空の場合はクラッシュします。

このように私の代わりにguardをアンラップ何かを強制しないし、使用することをお勧めします決して:

guard let location = locations.last else { 
    return 
} 
+0

今はどんなエラーも出ませんが、実行時には私の場所がない地図が表示されます。 – Will

+0

それは別の話題です。 @ Paulw11のアドバイスに従ってください(ユーザー追跡モードを有効にする)。 – shallowThought

関連する問題