私は iOS 開発は初めてですが、Estimote が提供するサンプル アプリを変更しようとしています (Indoor Positioning SDK を使用しています)。この例では、-loadLocationFromJSON() という関数を含む MenuViewController という ViewController クラスがあります。ここで、この関数内で、locationViewController と呼ばれる ViewController の新しいインスタンスを作成します。これは、navigationController にプッシュされます。これまでのところ、すべて正常に動作し、ロケーション ファイルが正しく構築され、画面に表示されます。
ここでやりたいことは、LocationViewController の属性を切り替えることができる MenuViewController クラスにあるスイッチを作成することです。locationViewController には、true または false に設定できる、rotateOnPositionUpdate と呼ばれるその IndoorLocationView のプロパティがあります。locationViewController をプッシュする直前に、MenuViewController クラスのスイッチに従ってそのプロパティを設定したいと思います。これが私がこれまでに持っているものです:
@IBAction func loadLocationFromJSON() {
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("location", ofType: "json")
let content = NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil) as String
let location = ESTLocationBuilder.parseFromJSON(content)
var locationViewController:LocationViewController = LocationViewController(nibName: "LocationViewController", bundle: nil)
locationViewController.location = location
// the following line is where the code fails
locationViewController.indoorLocationView.rotateOnPositionUpdate = false
self.navigationController?.pushViewController(locationViewController, animated: true)
}
お気づきのことと思いますが、今はプロパティを false に設定しようとしています (スイッチの状態についても心配していません)... しかし、これをビルドしようとすると失敗します。デバッガーは、「致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました」というエラーを返します。これが何を意味するのか完全にはわかりません。また、その locationViewController クラスのプロパティを設定できない理由もわかりません。誰か助けてくれませんか?