Xcode8とswift3でのibeacon(BLE)の使用方法

beaconの信号強度読み込んで表示するだけのApp作りたかったのだけどネットには中々良いサイトがなくて苦労したのでメモ
※この記事はSwiftとiBeaconを使ってお母さんが自分の部屋に近づいて来た事を警告するアプリをつくるさまのコードをXcode8のswift3でコピペで動かすようにする誰得修正記事である
まず上記のリンク中のgithubからサンプルソースをコピペするとXcodeが問題点を適当に吐き出す。まずはそれを全てFixすると最終的に
case .Authorized, .AuthorizedWhenInUse:

if(UIDevice.currentDevice().systemVersion.substringToIndex(1).toInt() >= 8){

self.uuid.text = beacon.proximityUUID.UUIDString の3つのエラーがでるはずだ。この3つのうち一番最初のエラーはこのauthorizedかなんかのライブラリが勝手に使用を変更したせいでエラーがでている。
case .authorizedAlways, .authorizedWhenInUse:こう書き直せば解決するはずである。
次のエラーはsubstringToIndexメソッド(?)に関するエラーだが調べたがよくわからない。しかし丁寧なコメントのお陰でこの条件分岐はiOSのバージョンを確認していることがわかる。
Xcode8で開発対象となる最低のiOSはiOS8なのでそもそもここの条件分岐は必要ない。よって全て消すことでエラーは消える。
そしてここで重要なのがiOS8で初期化を行っているself.manager.requestAlwaysAuthorization()という許可の部分をself.manager.requestWhenInUseAuthorization()と書き換えておくように(理由は後術)
最後のエラーはFixしていくうちにUUIDをuuidに変更してしまっているので、self.uuid.text = beacon.proximityUUID.uuidStringとすればよい。
ここでアプリをデバッグしてみるとラベルの初期値が記述されているだけでありおそらくビーコンを受信できていない。
Swift2でビーコン受信さまの記事を見るとInfo.plistNSLocationWhenInUseUsageDescriptionのキーが必要とあるがXcode8でのInfo.plistのキー一覧を見てみてもそのようなキーはない。
よく探すと分かるのだがこのキー、実はキーの名前が変わっているのである。直接前のキー名を打てばオートコレクトしてくれるので直接打ち込めばOK
これは位置情報を許可するキーらしくこれがないとビーコンの信号を受信できないので忘れず設定するように。また先程self.manager.requestWhenInUseAuthorization()と許可するメソッドを変えたがこのキーの対応メソッドはこいつなのでこいつに変更したのである。Alwaysのほうのキーもあるのでメソッドを変更したくなければキーをAlwaysのほうにすれば恐らく大丈夫だろう。
これでもデータを読み込まなければlocationManagerの引数とかの注意がでているやつをFixすればデータを拾うかもしれない
3日か4日くらい唸っていたけど冷静に対処すればすぐ解決する問題だったなと思いました。