質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2148閲覧

swift 現在地取得アプリについて

blackinnovator

総合スコア9

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/01/19 05:45

###前提・実現したいこと
swift で 地図を作り現在位置取得可能なシステムを作っています。

###発生している問題・エラーメッセージ

Value of type 'NSArray' has no member 'LastObject'

###該当のソースコード

swift

1import UIKit 2 3import MapKit 4 5import CoreLocation 6 7 8 9class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { 10 11 12 13 var myMapView: MKMapView! 14 15 var myLocationManager: CLLocationManager! 16 17 18 19 override func viewDidLoad() { 20 21 super.viewDidLoad() 22 23 24 25 // LocationManagerの生成. 26 27 myLocationManager = CLLocationManager() 28 29 30 31 // Delegateの設定. 32 33 myLocationManager.delegate = self 34 35 36 37 // 距離のフィルタ. 38 39 myLocationManager.distanceFilter = 100.0 40 41 42 43 // 精度. 44 45 myLocationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters 46 47 48 49 // セキュリティ認証のステータスを取得. 50 51 let status = CLLocationManager.authorizationStatus() 52 53 54 55 // まだ認証が得られていない場合は、認証ダイアログを表示. 56 57 if(status == CLAuthorizationStatus.notDetermined) { 58 59 60 61 // まだ承認が得られていない場合は、認証ダイアログを表示. 62 63 self.myLocationManager.requestAlwaysAuthorization(); 64 65 } 66 67 68 69 // 位置情報の更新を開始. 70 71 myLocationManager.startUpdatingLocation() 72 73 74 75 // MapViewの生成. 76 77 myMapView = MKMapView() 78 79 80 81 // MapViewのサイズを画面全体に. 82 83 myMapView.frame = self.view.bounds 84 85 86 87 // Delegateを設定. 88 89 myMapView.delegate = self 90 91 92 93 // MapViewをViewに追加. 94 95 self.view.addSubview(myMapView) 96 97 98 99 // 中心点の緯度経度. 100 101 let myLat: CLLocationDegrees = 37.506804 102 103 let myLon: CLLocationDegrees = 139.930531 104 105 let myCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(myLat, myLon) as CLLocationCoordinate2D 106 107 108 109 // 縮尺. 110 111 let myLatDist : CLLocationDistance = 100 112 113 let myLonDist : CLLocationDistance = 100 114 115 116 117 // Regionを作成. 118 119 let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myCoordinate, myLatDist, myLonDist); 120 121 122 123 // MapViewに反映. 124 125 myMapView.setRegion(myRegion, animated: true) 126 127 128 129 } 130 131 132 133 // GPSから値を取得した際に呼び出されるメソッド. 134 135 func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 136 137 138 139 // 配列から現在座標を取得. 140 141 var MyLocations: NSArray = locations as NSArray 142 143 var MyLastLocation: CLLocation = MyLocations.LastObject as CLLocation 144 145 var MyLocation:CLLocationCoordinate2D = MyLastLocation.coordinate 146 147 148 149 // 縮尺. 150 151 let myLatDist : CLLocationDistance = 100 152 153 let myLonDist : CLLocationDistance = 100 154 155 156 157 // Regionを作成. 158 159 let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(MyLocation, myLatDist, myLonDist); 160 161 162 163 // MapViewに反映. 164 165 myMapView.setRegion(myRegion, animated: true) 166 167 } 168 169 170 171 // Regionが変更した時に呼び出されるメソッド. 172 173 func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 174 175 print("regionDidChangeAnimated") 176 177 } 178 179 180 181 // 認証が変更された時に呼び出されるメソッド. 182 183 private func LocationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { 184 185 186 187 } 188 189 190 191} 192

###試したこと
初心者なので色々と試したのですがわかりません
もしお分かりの方いればお願いいたします
###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

頭小文字の.lastObjectです。

わざわざNSArrayにしなくても、Arrayのまま、

swift

1var MyLastLocation: CLLocation = locations.last as CLLocation

と書けるんじゃないでしょうか?

投稿2018/01/19 05:54

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blackinnovator

2018/01/19 06:02

ありがとうございます!助かりました
guest

0

.LastObjectでなく、.lastObjectですよ。
Xcodeの補完機能を有効に使いましょう。

投稿2018/01/19 05:59

fromageblanc

総合スコア2724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問