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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

1回答

906閲覧

SwiftでClass 'ViewController' has no initializersと出てきてしまう

panaki8901

総合スコア6

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2018/02/03 10:41

SwiftでClass 'ViewController' has no initializersと出てきます。

Swiftで、MapKitをつかい、現在地点にフォーカスする地図アプリを制作しています。
現在地点をフォーカスする機能を実装中に以下のエラーメッセージが発生しました。

Class 'ViewController' has no initializers

該当のソースコード

Swift

1 2import UIKit 3 4// Map.Kit framework をimport 5import MapKit 6 7// MKMapViewDelegate の追加 8class ViewController: UIViewController, MKMapViewDelegate { 9 10 let location: Int 11 12 @IBOutlet var mapView:MKMapView! 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 17 // 位置情報を追いかける 18 mapView.userTrackingMode = MKUserTrackingMode.follow 19 20 21 let location:CLLocationCoordinate2D 22 23 24 25 // 縮尺を設定 26 var region:MKCoordinateRegion = mapView.region 27 region.center = location 28 region.span.longitudeDelta = 0.02 29 30 // 現在地を中心点としてセット 31 mapView.setRegion(region,animated:true) 32 33 } 34 35 36 override func didReceiveMemoryWarning() { 37 super.didReceiveMemoryWarning() 38 // Dispose of any resources that can be recreated. 39 } 40 41} 42

補足

Xcode Ver.9.2 (9C40b)

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

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

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

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

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

guest

回答1

0

Swift

1let location: Int

が初期化されていないように見えます。
使用していないなら削除したほうが良いです。
使用するのであれば初期値を入れるか以下のようにオプショナル型で宣言すべきです。

Swift

1var location: Int?

【追記】
また、viewDidLoad内に同じ変数名で型の異なるlocationがあるのですが、用途が違うのであれば変数名を変えるべきです。
「Constant 'location' used before being initialized」が出るとのことですが、何か値がセットされる前に、どこかでゲットされているようです。
このクラス変数はどこかで使用しているのでしょうか。提示されているソースには見当たりません。
クラス変数をオプショナルとした場合、使用される前に何らかの値を入れる必要があります。

投稿2018/02/04 01:02

編集2018/02/04 03:02
nakasho_dev

総合スコア2655

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

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

panaki8901

2018/02/04 02:19

変えてみたのですが、そうすると Constant 'location' used before being initialized というエラーが表示されてしまいました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問